12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068290692907029071290722907329074290752907629077290782907929080290812908229083290842908529086290872908829089290902909129092290932909429095290962909729098290992910029101291022910329104291052910629107291082910929110291112911229113291142911529116291172911829119291202912129122291232912429125291262912729128291292913029131291322913329134291352913629137291382913929140291412914229143291442914529146291472914829149291502915129152291532915429155291562915729158291592916029161291622916329164291652916629167291682916929170291712917229173291742917529176291772917829179291802918129182291832918429185291862918729188291892919029191291922919329194291952919629197291982919929200292012920229203292042920529206292072920829209292102921129212292132921429215292162921729218292192922029221292222922329224292252922629227292282922929230292312923229233292342923529236292372923829239292402924129242292432924429245292462924729248292492925029251292522925329254292552925629257292582925929260292612926229263292642926529266292672926829269292702927129272292732927429275292762927729278292792928029281292822928329284292852928629287292882928929290292912929229293292942929529296292972929829299293002930129302293032930429305293062930729308293092931029311293122931329314293152931629317293182931929320293212932229323293242932529326293272932829329293302933129332293332933429335293362933729338293392934029341293422934329344293452934629347293482934929350293512935229353293542935529356293572935829359293602936129362293632936429365293662936729368293692937029371293722937329374293752937629377293782937929380293812938229383293842938529386293872938829389293902939129392293932939429395293962939729398293992940029401294022940329404294052940629407294082940929410294112941229413294142941529416294172941829419294202942129422294232942429425294262942729428294292943029431294322943329434294352943629437294382943929440294412944229443294442944529446294472944829449294502945129452294532945429455294562945729458294592946029461294622946329464294652946629467294682946929470294712947229473294742947529476294772947829479294802948129482294832948429485294862948729488294892949029491294922949329494294952949629497294982949929500295012950229503295042950529506295072950829509295102951129512295132951429515295162951729518295192952029521295222952329524295252952629527295282952929530295312953229533295342953529536295372953829539295402954129542295432954429545295462954729548295492955029551295522955329554295552955629557295582955929560295612956229563295642956529566295672956829569295702957129572295732957429575295762957729578295792958029581295822958329584295852958629587295882958929590295912959229593295942959529596295972959829599296002960129602296032960429605296062960729608296092961029611296122961329614296152961629617296182961929620296212962229623296242962529626296272962829629296302963129632296332963429635296362963729638296392964029641296422964329644296452964629647296482964929650296512965229653296542965529656296572965829659296602966129662296632966429665296662966729668296692967029671296722967329674296752967629677296782967929680296812968229683296842968529686296872968829689296902969129692296932969429695296962969729698296992970029701297022970329704297052970629707297082970929710297112971229713297142971529716297172971829719297202972129722297232972429725297262972729728297292973029731297322973329734297352973629737297382973929740297412974229743297442974529746297472974829749297502975129752297532975429755297562975729758297592976029761297622976329764297652976629767297682976929770297712977229773297742977529776297772977829779297802978129782297832978429785297862978729788297892979029791297922979329794297952979629797297982979929800298012980229803298042980529806298072980829809298102981129812298132981429815298162981729818298192982029821298222982329824298252982629827298282982929830298312983229833298342983529836298372983829839298402984129842298432984429845298462984729848298492985029851298522985329854298552985629857298582985929860298612986229863298642986529866298672986829869298702987129872298732987429875298762987729878298792988029881298822988329884298852988629887298882988929890298912989229893298942989529896298972989829899299002990129902299032990429905299062990729908299092991029911299122991329914299152991629917299182991929920299212992229923299242992529926299272992829929299302993129932299332993429935299362993729938299392994029941299422994329944299452994629947299482994929950299512995229953299542995529956299572995829959299602996129962299632996429965299662996729968299692997029971299722997329974299752997629977299782997929980299812998229983299842998529986299872998829989299902999129992299932999429995299962999729998299993000030001300023000330004300053000630007300083000930010300113001230013300143001530016300173001830019300203002130022300233002430025300263002730028300293003030031300323003330034300353003630037300383003930040300413004230043300443004530046300473004830049300503005130052300533005430055300563005730058300593006030061300623006330064300653006630067300683006930070300713007230073300743007530076300773007830079300803008130082300833008430085300863008730088300893009030091300923009330094300953009630097300983009930100301013010230103301043010530106301073010830109301103011130112301133011430115301163011730118301193012030121301223012330124301253012630127301283012930130301313013230133301343013530136301373013830139301403014130142301433014430145301463014730148301493015030151301523015330154301553015630157301583015930160301613016230163301643016530166301673016830169301703017130172301733017430175301763017730178301793018030181301823018330184301853018630187301883018930190301913019230193301943019530196301973019830199302003020130202302033020430205302063020730208302093021030211302123021330214302153021630217302183021930220302213022230223302243022530226302273022830229302303023130232302333023430235302363023730238302393024030241302423024330244302453024630247302483024930250302513025230253302543025530256302573025830259302603026130262302633026430265302663026730268302693027030271302723027330274302753027630277302783027930280302813028230283302843028530286302873028830289302903029130292302933029430295302963029730298302993030030301303023030330304303053030630307303083030930310303113031230313303143031530316303173031830319303203032130322303233032430325303263032730328303293033030331303323033330334303353033630337303383033930340303413034230343303443034530346303473034830349303503035130352303533035430355303563035730358303593036030361303623036330364303653036630367303683036930370303713037230373303743037530376303773037830379303803038130382303833038430385303863038730388303893039030391303923039330394303953039630397303983039930400304013040230403304043040530406304073040830409304103041130412304133041430415304163041730418304193042030421304223042330424304253042630427304283042930430304313043230433304343043530436304373043830439304403044130442304433044430445304463044730448304493045030451304523045330454304553045630457304583045930460304613046230463304643046530466304673046830469304703047130472304733047430475304763047730478304793048030481304823048330484304853048630487304883048930490304913049230493304943049530496304973049830499305003050130502305033050430505305063050730508305093051030511305123051330514305153051630517305183051930520305213052230523305243052530526305273052830529305303053130532305333053430535305363053730538305393054030541305423054330544305453054630547305483054930550305513055230553305543055530556305573055830559305603056130562305633056430565305663056730568305693057030571305723057330574305753057630577305783057930580305813058230583305843058530586305873058830589305903059130592305933059430595305963059730598305993060030601306023060330604306053060630607306083060930610306113061230613306143061530616306173061830619306203062130622306233062430625306263062730628306293063030631306323063330634306353063630637306383063930640306413064230643306443064530646306473064830649306503065130652306533065430655306563065730658306593066030661306623066330664306653066630667306683066930670306713067230673306743067530676306773067830679306803068130682306833068430685306863068730688306893069030691306923069330694306953069630697306983069930700307013070230703307043070530706307073070830709307103071130712307133071430715307163071730718307193072030721307223072330724307253072630727307283072930730307313073230733307343073530736307373073830739307403074130742307433074430745307463074730748307493075030751307523075330754307553075630757307583075930760307613076230763307643076530766307673076830769307703077130772307733077430775307763077730778307793078030781307823078330784307853078630787307883078930790307913079230793307943079530796307973079830799308003080130802308033080430805308063080730808308093081030811308123081330814308153081630817308183081930820308213082230823308243082530826308273082830829308303083130832308333083430835308363083730838308393084030841308423084330844308453084630847308483084930850308513085230853308543085530856308573085830859308603086130862308633086430865308663086730868308693087030871308723087330874308753087630877308783087930880308813088230883308843088530886308873088830889308903089130892308933089430895308963089730898308993090030901309023090330904309053090630907309083090930910309113091230913309143091530916309173091830919309203092130922309233092430925309263092730928309293093030931309323093330934309353093630937309383093930940309413094230943309443094530946309473094830949309503095130952309533095430955309563095730958309593096030961309623096330964309653096630967309683096930970309713097230973309743097530976309773097830979309803098130982309833098430985309863098730988309893099030991309923099330994309953099630997309983099931000310013100231003310043100531006310073100831009310103101131012310133101431015310163101731018310193102031021310223102331024310253102631027310283102931030310313103231033310343103531036310373103831039310403104131042310433104431045310463104731048310493105031051310523105331054310553105631057310583105931060310613106231063310643106531066310673106831069310703107131072310733107431075310763107731078310793108031081310823108331084310853108631087310883108931090310913109231093310943109531096310973109831099311003110131102311033110431105311063110731108311093111031111311123111331114311153111631117311183111931120311213112231123311243112531126311273112831129311303113131132311333113431135311363113731138311393114031141311423114331144311453114631147311483114931150311513115231153311543115531156311573115831159311603116131162311633116431165311663116731168311693117031171311723117331174311753117631177311783117931180311813118231183311843118531186311873118831189311903119131192311933119431195311963119731198311993120031201312023120331204312053120631207312083120931210312113121231213312143121531216312173121831219312203122131222312233122431225312263122731228312293123031231312323123331234312353123631237312383123931240312413124231243312443124531246312473124831249312503125131252312533125431255312563125731258312593126031261312623126331264312653126631267312683126931270312713127231273312743127531276312773127831279312803128131282312833128431285312863128731288312893129031291312923129331294312953129631297312983129931300313013130231303313043130531306313073130831309313103131131312313133131431315313163131731318313193132031321313223132331324313253132631327313283132931330313313133231333313343133531336313373133831339313403134131342313433134431345313463134731348313493135031351313523135331354313553135631357313583135931360313613136231363313643136531366313673136831369313703137131372313733137431375313763137731378313793138031381313823138331384313853138631387313883138931390313913139231393313943139531396313973139831399314003140131402314033140431405314063140731408314093141031411314123141331414314153141631417314183141931420314213142231423314243142531426314273142831429314303143131432314333143431435314363143731438314393144031441314423144331444314453144631447314483144931450314513145231453314543145531456314573145831459314603146131462314633146431465314663146731468314693147031471314723147331474314753147631477314783147931480314813148231483314843148531486314873148831489314903149131492314933149431495314963149731498314993150031501315023150331504315053150631507315083150931510315113151231513315143151531516315173151831519315203152131522315233152431525315263152731528315293153031531315323153331534315353153631537315383153931540315413154231543315443154531546315473154831549315503155131552315533155431555315563155731558315593156031561315623156331564315653156631567315683156931570315713157231573315743157531576315773157831579315803158131582315833158431585315863158731588315893159031591315923159331594315953159631597315983159931600316013160231603316043160531606316073160831609316103161131612316133161431615316163161731618316193162031621316223162331624316253162631627316283162931630316313163231633316343163531636316373163831639316403164131642316433164431645316463164731648316493165031651316523165331654316553165631657316583165931660316613166231663316643166531666316673166831669316703167131672316733167431675316763167731678316793168031681316823168331684316853168631687316883168931690316913169231693316943169531696316973169831699317003170131702317033170431705317063170731708317093171031711317123171331714317153171631717317183171931720317213172231723317243172531726317273172831729317303173131732317333173431735317363173731738317393174031741317423174331744317453174631747317483174931750317513175231753317543175531756317573175831759317603176131762317633176431765317663176731768317693177031771317723177331774317753177631777317783177931780317813178231783317843178531786317873178831789317903179131792317933179431795317963179731798317993180031801318023180331804318053180631807318083180931810318113181231813318143181531816318173181831819318203182131822318233182431825318263182731828318293183031831318323183331834318353183631837318383183931840318413184231843318443184531846318473184831849318503185131852318533185431855318563185731858318593186031861318623186331864318653186631867318683186931870318713187231873318743187531876318773187831879318803188131882318833188431885318863188731888318893189031891318923189331894318953189631897318983189931900319013190231903319043190531906319073190831909319103191131912319133191431915319163191731918319193192031921319223192331924319253192631927319283192931930319313193231933319343193531936319373193831939319403194131942319433194431945319463194731948319493195031951319523195331954319553195631957319583195931960319613196231963319643196531966319673196831969319703197131972319733197431975319763197731978319793198031981319823198331984319853198631987319883198931990319913199231993319943199531996319973199831999320003200132002320033200432005320063200732008320093201032011320123201332014320153201632017320183201932020320213202232023320243202532026320273202832029320303203132032320333203432035320363203732038320393204032041320423204332044320453204632047320483204932050320513205232053320543205532056320573205832059320603206132062320633206432065320663206732068320693207032071320723207332074320753207632077320783207932080320813208232083320843208532086320873208832089320903209132092320933209432095320963209732098320993210032101321023210332104321053210632107321083210932110321113211232113321143211532116321173211832119321203212132122321233212432125321263212732128321293213032131321323213332134321353213632137321383213932140321413214232143321443214532146321473214832149321503215132152321533215432155321563215732158321593216032161321623216332164321653216632167321683216932170321713217232173321743217532176321773217832179321803218132182321833218432185321863218732188321893219032191321923219332194321953219632197321983219932200322013220232203322043220532206322073220832209322103221132212322133221432215322163221732218322193222032221322223222332224322253222632227322283222932230322313223232233322343223532236322373223832239322403224132242322433224432245322463224732248322493225032251322523225332254322553225632257322583225932260322613226232263322643226532266322673226832269322703227132272322733227432275322763227732278322793228032281322823228332284322853228632287322883228932290322913229232293322943229532296322973229832299323003230132302323033230432305323063230732308323093231032311323123231332314323153231632317323183231932320323213232232323323243232532326323273232832329323303233132332323333233432335323363233732338323393234032341323423234332344323453234632347323483234932350323513235232353323543235532356323573235832359323603236132362323633236432365323663236732368323693237032371323723237332374323753237632377323783237932380323813238232383323843238532386323873238832389323903239132392323933239432395323963239732398323993240032401324023240332404324053240632407324083240932410324113241232413324143241532416324173241832419324203242132422324233242432425324263242732428324293243032431324323243332434324353243632437324383243932440324413244232443324443244532446324473244832449324503245132452324533245432455324563245732458324593246032461324623246332464324653246632467324683246932470324713247232473324743247532476324773247832479324803248132482324833248432485324863248732488324893249032491324923249332494324953249632497324983249932500325013250232503325043250532506325073250832509325103251132512325133251432515325163251732518325193252032521325223252332524325253252632527325283252932530325313253232533325343253532536325373253832539325403254132542325433254432545325463254732548325493255032551325523255332554325553255632557325583255932560325613256232563325643256532566325673256832569325703257132572325733257432575325763257732578325793258032581325823258332584325853258632587325883258932590325913259232593325943259532596325973259832599326003260132602326033260432605326063260732608326093261032611326123261332614326153261632617326183261932620326213262232623326243262532626326273262832629326303263132632326333263432635326363263732638326393264032641326423264332644326453264632647326483264932650326513265232653326543265532656326573265832659326603266132662326633266432665326663266732668326693267032671326723267332674326753267632677326783267932680326813268232683326843268532686326873268832689326903269132692326933269432695326963269732698326993270032701327023270332704327053270632707327083270932710327113271232713327143271532716327173271832719327203272132722327233272432725327263272732728327293273032731327323273332734327353273632737327383273932740327413274232743327443274532746327473274832749327503275132752327533275432755327563275732758327593276032761327623276332764327653276632767327683276932770327713277232773327743277532776327773277832779327803278132782327833278432785327863278732788327893279032791327923279332794327953279632797327983279932800328013280232803328043280532806328073280832809328103281132812328133281432815328163281732818328193282032821328223282332824328253282632827328283282932830328313283232833328343283532836328373283832839328403284132842328433284432845328463284732848328493285032851328523285332854328553285632857328583285932860328613286232863328643286532866328673286832869328703287132872328733287432875328763287732878328793288032881328823288332884328853288632887328883288932890328913289232893328943289532896328973289832899329003290132902329033290432905329063290732908329093291032911329123291332914329153291632917329183291932920329213292232923329243292532926329273292832929329303293132932329333293432935329363293732938329393294032941329423294332944329453294632947329483294932950329513295232953329543295532956329573295832959329603296132962329633296432965329663296732968329693297032971329723297332974329753297632977329783297932980329813298232983329843298532986329873298832989329903299132992329933299432995329963299732998329993300033001330023300333004330053300633007330083300933010330113301233013330143301533016330173301833019330203302133022330233302433025330263302733028330293303033031330323303333034330353303633037330383303933040330413304233043330443304533046330473304833049330503305133052330533305433055330563305733058330593306033061330623306333064330653306633067330683306933070330713307233073330743307533076330773307833079330803308133082330833308433085330863308733088330893309033091330923309333094330953309633097330983309933100331013310233103331043310533106331073310833109331103311133112331133311433115331163311733118331193312033121331223312333124331253312633127331283312933130331313313233133331343313533136331373313833139331403314133142331433314433145331463314733148331493315033151331523315333154331553315633157331583315933160331613316233163331643316533166331673316833169331703317133172331733317433175331763317733178331793318033181331823318333184331853318633187331883318933190331913319233193331943319533196331973319833199332003320133202332033320433205332063320733208332093321033211332123321333214332153321633217332183321933220332213322233223332243322533226332273322833229332303323133232332333323433235332363323733238332393324033241332423324333244332453324633247332483324933250332513325233253332543325533256332573325833259332603326133262332633326433265332663326733268332693327033271332723327333274332753327633277332783327933280332813328233283332843328533286332873328833289332903329133292332933329433295332963329733298332993330033301333023330333304333053330633307333083330933310333113331233313333143331533316333173331833319333203332133322333233332433325333263332733328333293333033331333323333333334333353333633337333383333933340333413334233343333443334533346333473334833349333503335133352333533335433355333563335733358333593336033361333623336333364333653336633367333683336933370333713337233373333743337533376333773337833379333803338133382333833338433385333863338733388333893339033391333923339333394333953339633397333983339933400334013340233403334043340533406334073340833409334103341133412334133341433415334163341733418334193342033421334223342333424334253342633427334283342933430334313343233433334343343533436334373343833439334403344133442334433344433445334463344733448334493345033451334523345333454334553345633457334583345933460334613346233463334643346533466334673346833469334703347133472334733347433475334763347733478334793348033481334823348333484334853348633487334883348933490334913349233493334943349533496334973349833499335003350133502335033350433505335063350733508335093351033511335123351333514335153351633517335183351933520335213352233523335243352533526335273352833529335303353133532335333353433535335363353733538335393354033541335423354333544335453354633547335483354933550335513355233553335543355533556335573355833559335603356133562335633356433565335663356733568335693357033571335723357333574335753357633577335783357933580335813358233583335843358533586335873358833589335903359133592335933359433595335963359733598335993360033601336023360333604336053360633607336083360933610336113361233613336143361533616336173361833619336203362133622336233362433625336263362733628336293363033631336323363333634336353363633637336383363933640336413364233643336443364533646336473364833649336503365133652336533365433655336563365733658336593366033661336623366333664336653366633667336683366933670336713367233673336743367533676336773367833679336803368133682336833368433685336863368733688336893369033691336923369333694336953369633697336983369933700337013370233703337043370533706337073370833709337103371133712337133371433715337163371733718337193372033721337223372333724337253372633727337283372933730337313373233733337343373533736337373373833739337403374133742337433374433745337463374733748337493375033751337523375333754337553375633757337583375933760337613376233763337643376533766337673376833769337703377133772337733377433775337763377733778337793378033781337823378333784337853378633787337883378933790337913379233793337943379533796337973379833799338003380133802338033380433805338063380733808338093381033811338123381333814338153381633817338183381933820338213382233823338243382533826338273382833829338303383133832338333383433835338363383733838338393384033841338423384333844338453384633847338483384933850338513385233853338543385533856338573385833859338603386133862338633386433865338663386733868338693387033871338723387333874338753387633877338783387933880338813388233883338843388533886338873388833889338903389133892338933389433895338963389733898338993390033901339023390333904339053390633907339083390933910339113391233913339143391533916339173391833919339203392133922339233392433925339263392733928339293393033931339323393333934339353393633937339383393933940339413394233943339443394533946339473394833949339503395133952339533395433955339563395733958339593396033961339623396333964339653396633967339683396933970339713397233973339743397533976339773397833979339803398133982339833398433985339863398733988339893399033991339923399333994339953399633997339983399934000340013400234003340043400534006340073400834009340103401134012340133401434015340163401734018340193402034021340223402334024340253402634027340283402934030340313403234033340343403534036340373403834039340403404134042340433404434045340463404734048340493405034051340523405334054340553405634057340583405934060340613406234063340643406534066340673406834069340703407134072340733407434075340763407734078340793408034081340823408334084340853408634087340883408934090340913409234093340943409534096340973409834099341003410134102341033410434105341063410734108341093411034111341123411334114341153411634117341183411934120341213412234123341243412534126341273412834129341303413134132341333413434135341363413734138341393414034141341423414334144341453414634147341483414934150341513415234153341543415534156341573415834159341603416134162341633416434165341663416734168341693417034171341723417334174341753417634177341783417934180341813418234183341843418534186341873418834189341903419134192341933419434195341963419734198341993420034201342023420334204342053420634207342083420934210342113421234213342143421534216342173421834219342203422134222342233422434225342263422734228342293423034231342323423334234342353423634237342383423934240342413424234243342443424534246342473424834249342503425134252342533425434255342563425734258342593426034261342623426334264342653426634267342683426934270342713427234273342743427534276342773427834279342803428134282342833428434285342863428734288342893429034291342923429334294342953429634297342983429934300343013430234303343043430534306343073430834309343103431134312343133431434315343163431734318343193432034321343223432334324343253432634327343283432934330343313433234333343343433534336343373433834339343403434134342343433434434345343463434734348343493435034351343523435334354343553435634357343583435934360343613436234363343643436534366343673436834369343703437134372343733437434375343763437734378343793438034381343823438334384343853438634387343883438934390343913439234393343943439534396343973439834399344003440134402344033440434405344063440734408344093441034411344123441334414344153441634417344183441934420344213442234423344243442534426344273442834429344303443134432344333443434435344363443734438344393444034441344423444334444344453444634447344483444934450344513445234453344543445534456344573445834459344603446134462344633446434465344663446734468344693447034471344723447334474344753447634477344783447934480344813448234483344843448534486344873448834489344903449134492344933449434495344963449734498344993450034501345023450334504345053450634507345083450934510345113451234513345143451534516345173451834519345203452134522345233452434525345263452734528345293453034531345323453334534345353453634537345383453934540345413454234543345443454534546345473454834549345503455134552345533455434555345563455734558345593456034561345623456334564345653456634567345683456934570345713457234573345743457534576345773457834579345803458134582345833458434585345863458734588345893459034591345923459334594345953459634597345983459934600346013460234603346043460534606346073460834609346103461134612346133461434615346163461734618346193462034621346223462334624346253462634627346283462934630346313463234633346343463534636346373463834639346403464134642346433464434645346463464734648346493465034651346523465334654346553465634657346583465934660346613466234663346643466534666346673466834669346703467134672346733467434675346763467734678346793468034681346823468334684346853468634687346883468934690346913469234693346943469534696346973469834699347003470134702347033470434705347063470734708347093471034711347123471334714347153471634717347183471934720347213472234723347243472534726347273472834729347303473134732347333473434735347363473734738347393474034741347423474334744347453474634747347483474934750347513475234753347543475534756347573475834759347603476134762347633476434765347663476734768347693477034771347723477334774347753477634777347783477934780347813478234783347843478534786347873478834789347903479134792347933479434795347963479734798347993480034801348023480334804348053480634807348083480934810348113481234813348143481534816348173481834819348203482134822348233482434825348263482734828348293483034831348323483334834348353483634837348383483934840348413484234843348443484534846348473484834849348503485134852348533485434855348563485734858348593486034861348623486334864348653486634867348683486934870348713487234873348743487534876348773487834879348803488134882348833488434885348863488734888348893489034891348923489334894348953489634897348983489934900349013490234903349043490534906349073490834909349103491134912349133491434915349163491734918349193492034921349223492334924349253492634927349283492934930349313493234933349343493534936349373493834939349403494134942349433494434945349463494734948349493495034951349523495334954349553495634957349583495934960349613496234963349643496534966349673496834969349703497134972349733497434975349763497734978349793498034981349823498334984349853498634987349883498934990349913499234993349943499534996349973499834999350003500135002350033500435005350063500735008350093501035011350123501335014350153501635017350183501935020350213502235023350243502535026350273502835029350303503135032350333503435035350363503735038350393504035041350423504335044350453504635047350483504935050350513505235053350543505535056350573505835059350603506135062350633506435065350663506735068350693507035071350723507335074350753507635077350783507935080350813508235083350843508535086350873508835089350903509135092350933509435095350963509735098350993510035101351023510335104351053510635107351083510935110351113511235113351143511535116351173511835119351203512135122351233512435125351263512735128351293513035131351323513335134351353513635137351383513935140351413514235143351443514535146351473514835149351503515135152351533515435155351563515735158351593516035161351623516335164351653516635167351683516935170351713517235173351743517535176351773517835179351803518135182351833518435185351863518735188351893519035191351923519335194351953519635197351983519935200352013520235203352043520535206352073520835209352103521135212352133521435215352163521735218352193522035221352223522335224352253522635227352283522935230352313523235233352343523535236352373523835239352403524135242352433524435245352463524735248352493525035251352523525335254352553525635257352583525935260352613526235263352643526535266352673526835269352703527135272352733527435275352763527735278352793528035281352823528335284352853528635287352883528935290352913529235293352943529535296352973529835299353003530135302353033530435305353063530735308353093531035311353123531335314353153531635317353183531935320353213532235323353243532535326353273532835329353303533135332353333533435335353363533735338353393534035341353423534335344353453534635347353483534935350353513535235353353543535535356353573535835359353603536135362353633536435365353663536735368353693537035371353723537335374353753537635377353783537935380353813538235383353843538535386353873538835389353903539135392353933539435395353963539735398353993540035401354023540335404354053540635407354083540935410354113541235413354143541535416354173541835419354203542135422354233542435425354263542735428354293543035431354323543335434354353543635437354383543935440354413544235443354443544535446354473544835449354503545135452354533545435455354563545735458354593546035461354623546335464354653546635467354683546935470354713547235473354743547535476354773547835479354803548135482354833548435485354863548735488354893549035491354923549335494354953549635497354983549935500355013550235503355043550535506355073550835509355103551135512355133551435515355163551735518355193552035521355223552335524355253552635527355283552935530355313553235533355343553535536355373553835539355403554135542355433554435545355463554735548355493555035551355523555335554355553555635557355583555935560355613556235563355643556535566355673556835569355703557135572355733557435575355763557735578355793558035581355823558335584355853558635587355883558935590355913559235593355943559535596355973559835599356003560135602356033560435605356063560735608356093561035611356123561335614356153561635617356183561935620356213562235623356243562535626356273562835629356303563135632356333563435635356363563735638356393564035641356423564335644356453564635647356483564935650356513565235653356543565535656356573565835659356603566135662356633566435665356663566735668356693567035671356723567335674356753567635677356783567935680356813568235683356843568535686356873568835689356903569135692356933569435695356963569735698356993570035701357023570335704357053570635707357083570935710357113571235713357143571535716357173571835719357203572135722357233572435725357263572735728357293573035731357323573335734357353573635737357383573935740357413574235743357443574535746357473574835749357503575135752357533575435755357563575735758357593576035761357623576335764357653576635767357683576935770357713577235773357743577535776357773577835779357803578135782357833578435785357863578735788357893579035791357923579335794357953579635797357983579935800358013580235803358043580535806358073580835809358103581135812358133581435815358163581735818358193582035821358223582335824358253582635827358283582935830358313583235833358343583535836358373583835839358403584135842358433584435845358463584735848358493585035851358523585335854358553585635857358583585935860358613586235863358643586535866358673586835869358703587135872358733587435875358763587735878358793588035881358823588335884358853588635887358883588935890358913589235893358943589535896358973589835899359003590135902359033590435905359063590735908359093591035911359123591335914359153591635917359183591935920359213592235923359243592535926359273592835929359303593135932359333593435935359363593735938359393594035941359423594335944359453594635947359483594935950359513595235953359543595535956359573595835959359603596135962359633596435965359663596735968359693597035971359723597335974359753597635977359783597935980359813598235983359843598535986359873598835989359903599135992359933599435995359963599735998359993600036001360023600336004360053600636007360083600936010360113601236013360143601536016360173601836019360203602136022360233602436025360263602736028360293603036031360323603336034360353603636037360383603936040360413604236043360443604536046360473604836049360503605136052360533605436055360563605736058360593606036061360623606336064360653606636067360683606936070360713607236073360743607536076360773607836079360803608136082360833608436085360863608736088360893609036091360923609336094360953609636097360983609936100361013610236103361043610536106361073610836109361103611136112361133611436115361163611736118361193612036121361223612336124361253612636127361283612936130361313613236133361343613536136361373613836139361403614136142361433614436145361463614736148361493615036151361523615336154361553615636157361583615936160361613616236163361643616536166361673616836169361703617136172361733617436175361763617736178361793618036181361823618336184361853618636187361883618936190361913619236193361943619536196361973619836199362003620136202362033620436205362063620736208362093621036211362123621336214362153621636217362183621936220362213622236223362243622536226362273622836229362303623136232362333623436235362363623736238362393624036241362423624336244362453624636247362483624936250362513625236253362543625536256362573625836259362603626136262362633626436265362663626736268362693627036271362723627336274362753627636277362783627936280362813628236283362843628536286362873628836289362903629136292362933629436295362963629736298362993630036301363023630336304363053630636307363083630936310363113631236313363143631536316363173631836319363203632136322363233632436325363263632736328363293633036331363323633336334363353633636337363383633936340363413634236343363443634536346363473634836349363503635136352363533635436355363563635736358363593636036361363623636336364363653636636367363683636936370363713637236373363743637536376363773637836379363803638136382363833638436385363863638736388363893639036391363923639336394363953639636397363983639936400364013640236403364043640536406364073640836409364103641136412364133641436415364163641736418364193642036421364223642336424364253642636427364283642936430364313643236433364343643536436364373643836439364403644136442364433644436445364463644736448364493645036451364523645336454364553645636457364583645936460364613646236463364643646536466364673646836469364703647136472364733647436475364763647736478364793648036481364823648336484364853648636487364883648936490364913649236493364943649536496364973649836499365003650136502365033650436505365063650736508365093651036511365123651336514365153651636517365183651936520365213652236523365243652536526365273652836529365303653136532365333653436535365363653736538365393654036541365423654336544365453654636547365483654936550365513655236553365543655536556365573655836559365603656136562365633656436565365663656736568365693657036571365723657336574365753657636577365783657936580365813658236583365843658536586365873658836589365903659136592365933659436595365963659736598365993660036601366023660336604366053660636607366083660936610366113661236613366143661536616366173661836619366203662136622366233662436625366263662736628366293663036631366323663336634366353663636637366383663936640366413664236643366443664536646366473664836649366503665136652366533665436655366563665736658366593666036661366623666336664366653666636667366683666936670366713667236673366743667536676366773667836679366803668136682366833668436685366863668736688366893669036691366923669336694366953669636697366983669936700367013670236703367043670536706367073670836709367103671136712367133671436715367163671736718367193672036721367223672336724367253672636727367283672936730367313673236733367343673536736367373673836739367403674136742367433674436745367463674736748367493675036751367523675336754367553675636757367583675936760367613676236763367643676536766367673676836769367703677136772367733677436775367763677736778367793678036781367823678336784367853678636787367883678936790367913679236793367943679536796367973679836799368003680136802368033680436805368063680736808368093681036811368123681336814368153681636817368183681936820368213682236823368243682536826368273682836829368303683136832368333683436835368363683736838368393684036841368423684336844368453684636847368483684936850368513685236853368543685536856368573685836859368603686136862368633686436865368663686736868368693687036871368723687336874368753687636877368783687936880368813688236883368843688536886368873688836889368903689136892368933689436895368963689736898368993690036901369023690336904369053690636907369083690936910369113691236913369143691536916369173691836919369203692136922369233692436925369263692736928369293693036931369323693336934369353693636937369383693936940369413694236943369443694536946369473694836949369503695136952369533695436955369563695736958369593696036961369623696336964369653696636967369683696936970369713697236973369743697536976369773697836979369803698136982369833698436985369863698736988369893699036991369923699336994369953699636997369983699937000370013700237003370043700537006370073700837009370103701137012370133701437015370163701737018370193702037021370223702337024370253702637027370283702937030370313703237033370343703537036370373703837039370403704137042370433704437045370463704737048370493705037051370523705337054370553705637057370583705937060370613706237063370643706537066370673706837069370703707137072370733707437075370763707737078370793708037081370823708337084370853708637087370883708937090370913709237093370943709537096370973709837099371003710137102371033710437105371063710737108371093711037111371123711337114371153711637117371183711937120371213712237123371243712537126371273712837129371303713137132371333713437135371363713737138371393714037141371423714337144371453714637147371483714937150371513715237153371543715537156371573715837159371603716137162371633716437165371663716737168371693717037171371723717337174371753717637177371783717937180371813718237183371843718537186371873718837189371903719137192371933719437195371963719737198371993720037201372023720337204372053720637207372083720937210372113721237213372143721537216372173721837219372203722137222372233722437225372263722737228372293723037231372323723337234372353723637237372383723937240372413724237243372443724537246372473724837249372503725137252372533725437255372563725737258372593726037261372623726337264372653726637267372683726937270372713727237273372743727537276372773727837279372803728137282372833728437285372863728737288372893729037291372923729337294372953729637297372983729937300373013730237303373043730537306373073730837309373103731137312373133731437315373163731737318373193732037321373223732337324373253732637327373283732937330373313733237333373343733537336373373733837339373403734137342373433734437345373463734737348373493735037351373523735337354373553735637357373583735937360373613736237363373643736537366373673736837369373703737137372373733737437375373763737737378373793738037381373823738337384373853738637387373883738937390373913739237393373943739537396373973739837399374003740137402374033740437405374063740737408374093741037411374123741337414374153741637417374183741937420374213742237423374243742537426374273742837429374303743137432374333743437435374363743737438374393744037441374423744337444374453744637447374483744937450374513745237453374543745537456374573745837459374603746137462374633746437465374663746737468374693747037471374723747337474374753747637477374783747937480374813748237483374843748537486374873748837489374903749137492374933749437495374963749737498374993750037501375023750337504375053750637507375083750937510375113751237513375143751537516375173751837519375203752137522375233752437525375263752737528375293753037531375323753337534375353753637537375383753937540375413754237543375443754537546375473754837549375503755137552375533755437555375563755737558375593756037561375623756337564375653756637567375683756937570375713757237573375743757537576375773757837579375803758137582375833758437585375863758737588375893759037591375923759337594375953759637597375983759937600376013760237603376043760537606376073760837609376103761137612376133761437615376163761737618376193762037621376223762337624376253762637627376283762937630376313763237633376343763537636376373763837639376403764137642376433764437645376463764737648376493765037651376523765337654376553765637657376583765937660376613766237663376643766537666376673766837669376703767137672376733767437675376763767737678376793768037681376823768337684376853768637687376883768937690376913769237693376943769537696376973769837699377003770137702377033770437705377063770737708377093771037711377123771337714377153771637717377183771937720377213772237723377243772537726377273772837729377303773137732377333773437735377363773737738377393774037741377423774337744377453774637747377483774937750377513775237753377543775537756377573775837759377603776137762377633776437765377663776737768377693777037771377723777337774377753777637777377783777937780377813778237783377843778537786377873778837789377903779137792377933779437795377963779737798377993780037801378023780337804378053780637807378083780937810378113781237813378143781537816378173781837819378203782137822378233782437825378263782737828378293783037831378323783337834378353783637837378383783937840378413784237843378443784537846378473784837849378503785137852378533785437855378563785737858378593786037861378623786337864378653786637867378683786937870378713787237873378743787537876378773787837879378803788137882378833788437885378863788737888378893789037891378923789337894378953789637897378983789937900379013790237903379043790537906379073790837909379103791137912379133791437915379163791737918379193792037921379223792337924379253792637927379283792937930379313793237933379343793537936379373793837939379403794137942379433794437945379463794737948379493795037951379523795337954379553795637957379583795937960379613796237963379643796537966379673796837969379703797137972379733797437975379763797737978379793798037981379823798337984379853798637987379883798937990379913799237993379943799537996379973799837999380003800138002380033800438005380063800738008380093801038011380123801338014380153801638017380183801938020380213802238023380243802538026380273802838029380303803138032380333803438035380363803738038380393804038041380423804338044380453804638047380483804938050380513805238053380543805538056380573805838059380603806138062380633806438065380663806738068380693807038071380723807338074380753807638077380783807938080380813808238083380843808538086380873808838089380903809138092380933809438095380963809738098380993810038101381023810338104381053810638107381083810938110381113811238113381143811538116381173811838119381203812138122381233812438125381263812738128381293813038131381323813338134381353813638137381383813938140381413814238143381443814538146381473814838149381503815138152381533815438155381563815738158381593816038161381623816338164381653816638167381683816938170381713817238173381743817538176381773817838179381803818138182381833818438185381863818738188381893819038191381923819338194381953819638197381983819938200382013820238203382043820538206382073820838209382103821138212382133821438215382163821738218382193822038221382223822338224382253822638227382283822938230382313823238233382343823538236382373823838239382403824138242382433824438245382463824738248382493825038251382523825338254382553825638257382583825938260382613826238263382643826538266382673826838269382703827138272382733827438275382763827738278382793828038281382823828338284382853828638287382883828938290382913829238293382943829538296382973829838299383003830138302383033830438305383063830738308383093831038311383123831338314383153831638317383183831938320383213832238323383243832538326383273832838329383303833138332383333833438335383363833738338383393834038341383423834338344383453834638347383483834938350383513835238353383543835538356383573835838359383603836138362383633836438365383663836738368383693837038371383723837338374383753837638377383783837938380383813838238383383843838538386383873838838389383903839138392383933839438395383963839738398383993840038401384023840338404384053840638407384083840938410384113841238413384143841538416384173841838419384203842138422384233842438425384263842738428384293843038431384323843338434384353843638437384383843938440384413844238443384443844538446384473844838449384503845138452384533845438455384563845738458384593846038461384623846338464384653846638467384683846938470384713847238473384743847538476384773847838479384803848138482384833848438485384863848738488384893849038491384923849338494384953849638497384983849938500385013850238503385043850538506385073850838509385103851138512385133851438515385163851738518385193852038521385223852338524385253852638527385283852938530385313853238533385343853538536385373853838539385403854138542385433854438545385463854738548385493855038551385523855338554385553855638557385583855938560385613856238563385643856538566385673856838569385703857138572385733857438575385763857738578385793858038581385823858338584385853858638587385883858938590385913859238593385943859538596385973859838599386003860138602386033860438605386063860738608386093861038611386123861338614386153861638617386183861938620386213862238623386243862538626386273862838629386303863138632386333863438635386363863738638386393864038641386423864338644386453864638647386483864938650386513865238653386543865538656386573865838659386603866138662386633866438665386663866738668386693867038671386723867338674386753867638677386783867938680386813868238683386843868538686386873868838689386903869138692386933869438695386963869738698386993870038701387023870338704387053870638707387083870938710387113871238713387143871538716387173871838719387203872138722387233872438725387263872738728387293873038731387323873338734387353873638737387383873938740387413874238743387443874538746387473874838749387503875138752387533875438755387563875738758387593876038761387623876338764387653876638767387683876938770387713877238773387743877538776387773877838779387803878138782387833878438785387863878738788387893879038791387923879338794387953879638797387983879938800388013880238803388043880538806388073880838809388103881138812388133881438815388163881738818388193882038821388223882338824388253882638827388283882938830388313883238833388343883538836388373883838839388403884138842388433884438845388463884738848388493885038851388523885338854388553885638857388583885938860388613886238863388643886538866388673886838869388703887138872388733887438875388763887738878388793888038881388823888338884388853888638887388883888938890388913889238893388943889538896388973889838899389003890138902389033890438905389063890738908389093891038911389123891338914389153891638917389183891938920389213892238923389243892538926389273892838929389303893138932389333893438935389363893738938389393894038941389423894338944389453894638947389483894938950389513895238953389543895538956389573895838959389603896138962389633896438965389663896738968389693897038971389723897338974389753897638977389783897938980389813898238983389843898538986389873898838989389903899138992389933899438995389963899738998389993900039001390023900339004390053900639007390083900939010390113901239013390143901539016390173901839019390203902139022390233902439025390263902739028390293903039031390323903339034390353903639037390383903939040390413904239043390443904539046390473904839049390503905139052390533905439055390563905739058390593906039061390623906339064390653906639067390683906939070390713907239073390743907539076390773907839079390803908139082390833908439085390863908739088390893909039091390923909339094390953909639097390983909939100391013910239103391043910539106391073910839109391103911139112391133911439115391163911739118391193912039121391223912339124391253912639127391283912939130391313913239133391343913539136391373913839139391403914139142391433914439145391463914739148391493915039151391523915339154391553915639157391583915939160391613916239163391643916539166391673916839169391703917139172391733917439175391763917739178391793918039181391823918339184391853918639187391883918939190391913919239193391943919539196391973919839199392003920139202392033920439205392063920739208392093921039211392123921339214392153921639217392183921939220392213922239223392243922539226392273922839229392303923139232392333923439235392363923739238392393924039241392423924339244392453924639247392483924939250392513925239253392543925539256392573925839259392603926139262392633926439265392663926739268392693927039271392723927339274392753927639277392783927939280392813928239283392843928539286392873928839289392903929139292392933929439295392963929739298392993930039301393023930339304393053930639307393083930939310393113931239313393143931539316393173931839319393203932139322393233932439325393263932739328393293933039331393323933339334393353933639337393383933939340393413934239343393443934539346393473934839349393503935139352393533935439355393563935739358393593936039361393623936339364393653936639367393683936939370393713937239373393743937539376393773937839379393803938139382393833938439385393863938739388393893939039391393923939339394393953939639397393983939939400394013940239403394043940539406394073940839409394103941139412394133941439415394163941739418394193942039421394223942339424394253942639427394283942939430394313943239433394343943539436394373943839439394403944139442394433944439445394463944739448394493945039451394523945339454394553945639457394583945939460394613946239463394643946539466394673946839469394703947139472394733947439475394763947739478394793948039481394823948339484394853948639487394883948939490394913949239493394943949539496394973949839499395003950139502395033950439505395063950739508395093951039511395123951339514395153951639517395183951939520395213952239523395243952539526395273952839529395303953139532395333953439535395363953739538395393954039541395423954339544395453954639547395483954939550395513955239553395543955539556395573955839559395603956139562395633956439565395663956739568395693957039571395723957339574395753957639577395783957939580395813958239583395843958539586395873958839589395903959139592395933959439595395963959739598395993960039601396023960339604396053960639607396083960939610396113961239613396143961539616396173961839619396203962139622396233962439625396263962739628396293963039631396323963339634396353963639637396383963939640396413964239643396443964539646396473964839649396503965139652396533965439655396563965739658396593966039661396623966339664396653966639667396683966939670396713967239673396743967539676396773967839679396803968139682396833968439685396863968739688396893969039691396923969339694396953969639697396983969939700397013970239703397043970539706397073970839709397103971139712397133971439715397163971739718397193972039721397223972339724397253972639727397283972939730397313973239733397343973539736397373973839739397403974139742397433974439745397463974739748397493975039751397523975339754397553975639757397583975939760397613976239763397643976539766397673976839769397703977139772397733977439775397763977739778397793978039781397823978339784397853978639787397883978939790397913979239793397943979539796397973979839799398003980139802398033980439805398063980739808398093981039811398123981339814398153981639817398183981939820398213982239823398243982539826398273982839829398303983139832398333983439835398363983739838398393984039841398423984339844398453984639847398483984939850398513985239853398543985539856398573985839859398603986139862398633986439865398663986739868398693987039871398723987339874398753987639877398783987939880398813988239883398843988539886398873988839889398903989139892398933989439895398963989739898398993990039901399023990339904399053990639907399083990939910399113991239913399143991539916399173991839919399203992139922399233992439925399263992739928399293993039931399323993339934399353993639937399383993939940399413994239943399443994539946399473994839949399503995139952399533995439955399563995739958399593996039961399623996339964399653996639967399683996939970399713997239973399743997539976399773997839979399803998139982399833998439985399863998739988399893999039991399923999339994399953999639997399983999940000400014000240003400044000540006400074000840009400104001140012400134001440015400164001740018400194002040021400224002340024400254002640027400284002940030400314003240033400344003540036400374003840039400404004140042400434004440045400464004740048400494005040051400524005340054400554005640057400584005940060400614006240063400644006540066400674006840069400704007140072400734007440075400764007740078400794008040081400824008340084400854008640087400884008940090400914009240093400944009540096400974009840099401004010140102401034010440105401064010740108401094011040111401124011340114401154011640117401184011940120401214012240123401244012540126401274012840129401304013140132401334013440135401364013740138401394014040141401424014340144401454014640147401484014940150401514015240153401544015540156401574015840159401604016140162401634016440165401664016740168401694017040171401724017340174401754017640177401784017940180401814018240183401844018540186401874018840189401904019140192401934019440195401964019740198401994020040201402024020340204402054020640207402084020940210402114021240213402144021540216402174021840219402204022140222402234022440225402264022740228402294023040231402324023340234402354023640237402384023940240402414024240243402444024540246402474024840249402504025140252402534025440255402564025740258402594026040261402624026340264402654026640267402684026940270402714027240273402744027540276402774027840279402804028140282402834028440285402864028740288402894029040291402924029340294402954029640297402984029940300403014030240303403044030540306403074030840309403104031140312403134031440315403164031740318403194032040321403224032340324403254032640327403284032940330403314033240333403344033540336403374033840339403404034140342403434034440345403464034740348403494035040351403524035340354403554035640357403584035940360403614036240363403644036540366403674036840369403704037140372403734037440375403764037740378403794038040381403824038340384403854038640387403884038940390403914039240393403944039540396403974039840399404004040140402404034040440405404064040740408404094041040411404124041340414404154041640417404184041940420404214042240423404244042540426404274042840429404304043140432404334043440435404364043740438404394044040441404424044340444404454044640447404484044940450404514045240453404544045540456404574045840459404604046140462404634046440465404664046740468404694047040471404724047340474404754047640477404784047940480404814048240483404844048540486404874048840489404904049140492404934049440495404964049740498404994050040501405024050340504405054050640507405084050940510405114051240513405144051540516405174051840519405204052140522405234052440525405264052740528405294053040531405324053340534405354053640537405384053940540405414054240543405444054540546405474054840549405504055140552405534055440555405564055740558405594056040561405624056340564405654056640567405684056940570405714057240573405744057540576405774057840579405804058140582405834058440585405864058740588405894059040591405924059340594405954059640597405984059940600406014060240603406044060540606406074060840609406104061140612406134061440615406164061740618406194062040621406224062340624406254062640627406284062940630406314063240633406344063540636406374063840639406404064140642406434064440645406464064740648406494065040651406524065340654406554065640657406584065940660406614066240663406644066540666406674066840669406704067140672406734067440675406764067740678406794068040681406824068340684406854068640687406884068940690406914069240693406944069540696406974069840699407004070140702407034070440705407064070740708407094071040711407124071340714407154071640717407184071940720407214072240723407244072540726407274072840729407304073140732407334073440735407364073740738407394074040741407424074340744407454074640747407484074940750407514075240753407544075540756407574075840759407604076140762407634076440765407664076740768407694077040771407724077340774407754077640777407784077940780407814078240783407844078540786407874078840789407904079140792407934079440795407964079740798407994080040801408024080340804408054080640807408084080940810408114081240813408144081540816408174081840819408204082140822408234082440825408264082740828408294083040831408324083340834408354083640837408384083940840408414084240843408444084540846408474084840849408504085140852408534085440855408564085740858408594086040861408624086340864408654086640867408684086940870408714087240873408744087540876408774087840879408804088140882408834088440885408864088740888408894089040891408924089340894408954089640897408984089940900409014090240903409044090540906409074090840909409104091140912409134091440915409164091740918409194092040921409224092340924409254092640927409284092940930409314093240933409344093540936409374093840939409404094140942409434094440945409464094740948409494095040951409524095340954409554095640957409584095940960409614096240963409644096540966409674096840969409704097140972409734097440975409764097740978409794098040981409824098340984409854098640987409884098940990409914099240993409944099540996409974099840999410004100141002410034100441005410064100741008410094101041011410124101341014410154101641017410184101941020410214102241023410244102541026410274102841029410304103141032410334103441035410364103741038410394104041041410424104341044410454104641047410484104941050410514105241053410544105541056410574105841059410604106141062410634106441065410664106741068410694107041071410724107341074410754107641077410784107941080410814108241083410844108541086410874108841089410904109141092410934109441095410964109741098410994110041101411024110341104411054110641107411084110941110411114111241113411144111541116411174111841119411204112141122411234112441125411264112741128411294113041131411324113341134411354113641137411384113941140411414114241143411444114541146411474114841149411504115141152411534115441155411564115741158411594116041161411624116341164411654116641167411684116941170411714117241173411744117541176411774117841179411804118141182411834118441185411864118741188411894119041191411924119341194411954119641197411984119941200412014120241203412044120541206412074120841209412104121141212412134121441215412164121741218412194122041221412224122341224412254122641227412284122941230412314123241233412344123541236412374123841239412404124141242412434124441245412464124741248412494125041251412524125341254412554125641257412584125941260412614126241263412644126541266412674126841269412704127141272412734127441275412764127741278412794128041281412824128341284412854128641287412884128941290412914129241293412944129541296412974129841299413004130141302413034130441305413064130741308413094131041311413124131341314413154131641317413184131941320413214132241323413244132541326413274132841329413304133141332413334133441335413364133741338413394134041341413424134341344413454134641347413484134941350413514135241353413544135541356413574135841359413604136141362413634136441365413664136741368413694137041371413724137341374413754137641377413784137941380413814138241383413844138541386413874138841389413904139141392413934139441395413964139741398413994140041401414024140341404414054140641407414084140941410414114141241413414144141541416414174141841419414204142141422414234142441425414264142741428414294143041431414324143341434414354143641437414384143941440414414144241443414444144541446414474144841449414504145141452414534145441455414564145741458414594146041461414624146341464414654146641467414684146941470414714147241473414744147541476414774147841479414804148141482414834148441485414864148741488414894149041491414924149341494414954149641497414984149941500415014150241503415044150541506415074150841509415104151141512415134151441515415164151741518415194152041521415224152341524415254152641527415284152941530415314153241533415344153541536415374153841539415404154141542415434154441545415464154741548415494155041551415524155341554415554155641557415584155941560415614156241563415644156541566415674156841569415704157141572415734157441575415764157741578415794158041581415824158341584415854158641587415884158941590415914159241593415944159541596415974159841599416004160141602416034160441605416064160741608416094161041611416124161341614416154161641617416184161941620416214162241623416244162541626416274162841629416304163141632416334163441635416364163741638416394164041641416424164341644416454164641647416484164941650416514165241653416544165541656416574165841659416604166141662416634166441665416664166741668416694167041671416724167341674416754167641677416784167941680416814168241683416844168541686416874168841689416904169141692416934169441695416964169741698416994170041701417024170341704417054170641707417084170941710417114171241713417144171541716417174171841719417204172141722417234172441725417264172741728417294173041731417324173341734417354173641737417384173941740417414174241743417444174541746417474174841749417504175141752417534175441755417564175741758417594176041761417624176341764417654176641767417684176941770417714177241773417744177541776417774177841779417804178141782417834178441785417864178741788417894179041791417924179341794417954179641797417984179941800418014180241803418044180541806418074180841809418104181141812418134181441815418164181741818418194182041821418224182341824418254182641827418284182941830418314183241833418344183541836418374183841839418404184141842418434184441845418464184741848418494185041851418524185341854418554185641857418584185941860418614186241863418644186541866418674186841869418704187141872418734187441875418764187741878418794188041881418824188341884418854188641887418884188941890418914189241893418944189541896418974189841899419004190141902419034190441905419064190741908419094191041911419124191341914419154191641917419184191941920419214192241923419244192541926419274192841929419304193141932419334193441935419364193741938419394194041941419424194341944419454194641947419484194941950419514195241953419544195541956419574195841959419604196141962419634196441965419664196741968419694197041971419724197341974419754197641977419784197941980419814198241983419844198541986419874198841989419904199141992419934199441995419964199741998419994200042001420024200342004420054200642007420084200942010420114201242013420144201542016420174201842019420204202142022420234202442025420264202742028420294203042031420324203342034420354203642037420384203942040420414204242043420444204542046420474204842049420504205142052420534205442055420564205742058420594206042061420624206342064420654206642067420684206942070420714207242073420744207542076420774207842079420804208142082420834208442085420864208742088420894209042091420924209342094420954209642097420984209942100421014210242103421044210542106421074210842109421104211142112421134211442115421164211742118421194212042121421224212342124421254212642127421284212942130421314213242133421344213542136421374213842139421404214142142421434214442145421464214742148421494215042151421524215342154421554215642157421584215942160421614216242163421644216542166421674216842169421704217142172421734217442175421764217742178421794218042181421824218342184421854218642187421884218942190421914219242193421944219542196421974219842199422004220142202422034220442205422064220742208422094221042211422124221342214422154221642217422184221942220422214222242223422244222542226422274222842229422304223142232422334223442235422364223742238422394224042241422424224342244422454224642247422484224942250422514225242253422544225542256422574225842259422604226142262422634226442265422664226742268422694227042271422724227342274422754227642277422784227942280422814228242283422844228542286422874228842289422904229142292422934229442295422964229742298422994230042301423024230342304423054230642307423084230942310423114231242313423144231542316423174231842319423204232142322423234232442325423264232742328423294233042331423324233342334423354233642337423384233942340423414234242343423444234542346423474234842349423504235142352423534235442355423564235742358423594236042361423624236342364423654236642367423684236942370423714237242373423744237542376423774237842379423804238142382423834238442385423864238742388423894239042391423924239342394423954239642397423984239942400424014240242403424044240542406424074240842409424104241142412424134241442415424164241742418424194242042421424224242342424424254242642427424284242942430424314243242433424344243542436424374243842439424404244142442424434244442445424464244742448424494245042451424524245342454424554245642457424584245942460424614246242463424644246542466424674246842469424704247142472424734247442475424764247742478424794248042481424824248342484424854248642487424884248942490424914249242493424944249542496424974249842499425004250142502425034250442505425064250742508425094251042511425124251342514425154251642517425184251942520425214252242523425244252542526425274252842529425304253142532425334253442535425364253742538425394254042541425424254342544425454254642547425484254942550425514255242553425544255542556425574255842559425604256142562425634256442565425664256742568425694257042571425724257342574425754257642577425784257942580425814258242583425844258542586425874258842589425904259142592425934259442595425964259742598425994260042601426024260342604426054260642607426084260942610426114261242613426144261542616426174261842619426204262142622426234262442625426264262742628426294263042631426324263342634426354263642637426384263942640426414264242643426444264542646426474264842649426504265142652426534265442655426564265742658426594266042661426624266342664426654266642667426684266942670426714267242673426744267542676426774267842679426804268142682426834268442685426864268742688426894269042691426924269342694426954269642697426984269942700427014270242703427044270542706427074270842709427104271142712427134271442715427164271742718427194272042721427224272342724427254272642727427284272942730427314273242733427344273542736427374273842739427404274142742427434274442745427464274742748427494275042751427524275342754427554275642757427584275942760427614276242763427644276542766427674276842769427704277142772427734277442775427764277742778427794278042781427824278342784427854278642787427884278942790427914279242793427944279542796427974279842799428004280142802428034280442805428064280742808428094281042811428124281342814428154281642817428184281942820428214282242823428244282542826428274282842829428304283142832428334283442835428364283742838428394284042841428424284342844428454284642847428484284942850428514285242853428544285542856428574285842859428604286142862428634286442865428664286742868428694287042871428724287342874428754287642877428784287942880428814288242883428844288542886428874288842889428904289142892428934289442895428964289742898428994290042901429024290342904429054290642907429084290942910429114291242913429144291542916429174291842919429204292142922429234292442925429264292742928429294293042931429324293342934429354293642937429384293942940429414294242943429444294542946429474294842949429504295142952429534295442955429564295742958429594296042961429624296342964429654296642967429684296942970429714297242973429744297542976429774297842979429804298142982429834298442985429864298742988429894299042991429924299342994429954299642997429984299943000430014300243003430044300543006430074300843009430104301143012430134301443015430164301743018430194302043021430224302343024430254302643027430284302943030430314303243033430344303543036430374303843039430404304143042430434304443045430464304743048430494305043051430524305343054430554305643057430584305943060430614306243063430644306543066430674306843069430704307143072430734307443075430764307743078430794308043081430824308343084430854308643087430884308943090430914309243093430944309543096430974309843099431004310143102431034310443105431064310743108431094311043111431124311343114431154311643117431184311943120431214312243123431244312543126431274312843129431304313143132431334313443135431364313743138431394314043141431424314343144431454314643147431484314943150431514315243153431544315543156431574315843159431604316143162431634316443165431664316743168431694317043171431724317343174431754317643177431784317943180431814318243183431844318543186431874318843189431904319143192431934319443195431964319743198431994320043201432024320343204432054320643207432084320943210432114321243213432144321543216432174321843219432204322143222432234322443225432264322743228432294323043231432324323343234432354323643237432384323943240432414324243243432444324543246432474324843249432504325143252432534325443255432564325743258432594326043261432624326343264432654326643267432684326943270432714327243273432744327543276432774327843279432804328143282432834328443285432864328743288432894329043291432924329343294432954329643297432984329943300433014330243303433044330543306433074330843309433104331143312433134331443315433164331743318433194332043321433224332343324433254332643327433284332943330433314333243333433344333543336433374333843339433404334143342433434334443345433464334743348433494335043351433524335343354433554335643357433584335943360433614336243363433644336543366433674336843369433704337143372433734337443375433764337743378433794338043381433824338343384433854338643387433884338943390433914339243393433944339543396433974339843399434004340143402434034340443405434064340743408434094341043411434124341343414434154341643417434184341943420434214342243423434244342543426434274342843429434304343143432434334343443435434364343743438434394344043441434424344343444434454344643447434484344943450434514345243453434544345543456434574345843459434604346143462434634346443465434664346743468434694347043471434724347343474434754347643477434784347943480434814348243483434844348543486434874348843489434904349143492434934349443495434964349743498434994350043501435024350343504435054350643507435084350943510435114351243513435144351543516435174351843519435204352143522435234352443525435264352743528435294353043531435324353343534435354353643537435384353943540435414354243543435444354543546435474354843549435504355143552435534355443555435564355743558435594356043561435624356343564435654356643567435684356943570435714357243573435744357543576435774357843579435804358143582435834358443585435864358743588435894359043591435924359343594435954359643597435984359943600436014360243603436044360543606436074360843609436104361143612436134361443615436164361743618436194362043621436224362343624436254362643627436284362943630436314363243633436344363543636436374363843639436404364143642436434364443645436464364743648436494365043651436524365343654436554365643657436584365943660436614366243663436644366543666436674366843669436704367143672436734367443675436764367743678436794368043681436824368343684436854368643687436884368943690436914369243693436944369543696436974369843699437004370143702437034370443705437064370743708437094371043711437124371343714437154371643717437184371943720437214372243723437244372543726437274372843729437304373143732437334373443735437364373743738437394374043741437424374343744437454374643747437484374943750437514375243753437544375543756437574375843759437604376143762437634376443765437664376743768437694377043771437724377343774437754377643777437784377943780437814378243783437844378543786437874378843789437904379143792437934379443795437964379743798437994380043801438024380343804438054380643807438084380943810438114381243813438144381543816438174381843819438204382143822438234382443825438264382743828438294383043831438324383343834438354383643837438384383943840438414384243843438444384543846438474384843849438504385143852438534385443855438564385743858438594386043861438624386343864438654386643867438684386943870438714387243873438744387543876438774387843879438804388143882438834388443885438864388743888438894389043891438924389343894438954389643897438984389943900439014390243903439044390543906439074390843909439104391143912439134391443915439164391743918439194392043921439224392343924439254392643927439284392943930439314393243933439344393543936439374393843939439404394143942439434394443945439464394743948439494395043951439524395343954439554395643957439584395943960439614396243963439644396543966439674396843969439704397143972439734397443975439764397743978439794398043981439824398343984439854398643987439884398943990439914399243993439944399543996439974399843999440004400144002440034400444005440064400744008440094401044011440124401344014440154401644017440184401944020440214402244023440244402544026440274402844029440304403144032440334403444035440364403744038440394404044041440424404344044440454404644047440484404944050440514405244053440544405544056440574405844059440604406144062440634406444065440664406744068440694407044071440724407344074440754407644077440784407944080440814408244083440844408544086440874408844089440904409144092440934409444095440964409744098440994410044101441024410344104441054410644107441084410944110441114411244113441144411544116441174411844119441204412144122441234412444125441264412744128441294413044131441324413344134441354413644137441384413944140441414414244143441444414544146441474414844149441504415144152441534415444155441564415744158441594416044161441624416344164441654416644167441684416944170441714417244173441744417544176441774417844179441804418144182441834418444185441864418744188441894419044191441924419344194441954419644197441984419944200442014420244203442044420544206442074420844209442104421144212442134421444215442164421744218442194422044221442224422344224442254422644227442284422944230442314423244233442344423544236442374423844239442404424144242442434424444245442464424744248442494425044251442524425344254442554425644257442584425944260442614426244263442644426544266442674426844269442704427144272442734427444275442764427744278442794428044281442824428344284442854428644287442884428944290442914429244293442944429544296442974429844299443004430144302443034430444305443064430744308443094431044311443124431344314443154431644317443184431944320443214432244323443244432544326443274432844329443304433144332443334433444335443364433744338443394434044341443424434344344443454434644347443484434944350443514435244353443544435544356443574435844359443604436144362443634436444365443664436744368443694437044371443724437344374443754437644377443784437944380443814438244383443844438544386443874438844389443904439144392443934439444395443964439744398443994440044401444024440344404444054440644407444084440944410444114441244413444144441544416444174441844419444204442144422444234442444425444264442744428444294443044431444324443344434444354443644437444384443944440444414444244443444444444544446444474444844449444504445144452444534445444455444564445744458444594446044461444624446344464444654446644467444684446944470444714447244473444744447544476444774447844479444804448144482444834448444485444864448744488444894449044491444924449344494444954449644497444984449944500445014450244503445044450544506445074450844509445104451144512445134451444515445164451744518445194452044521445224452344524445254452644527445284452944530445314453244533445344453544536445374453844539445404454144542445434454444545445464454744548445494455044551445524455344554445554455644557445584455944560445614456244563445644456544566445674456844569445704457144572445734457444575445764457744578445794458044581445824458344584445854458644587445884458944590445914459244593445944459544596445974459844599446004460144602446034460444605446064460744608446094461044611446124461344614446154461644617446184461944620446214462244623446244462544626446274462844629446304463144632446334463444635446364463744638446394464044641446424464344644446454464644647446484464944650446514465244653446544465544656446574465844659446604466144662446634466444665446664466744668446694467044671446724467344674446754467644677446784467944680446814468244683446844468544686446874468844689446904469144692446934469444695446964469744698446994470044701447024470344704447054470644707447084470944710447114471244713447144471544716447174471844719447204472144722447234472444725447264472744728447294473044731447324473344734447354473644737447384473944740447414474244743447444474544746447474474844749447504475144752447534475444755447564475744758447594476044761447624476344764447654476644767447684476944770447714477244773447744477544776447774477844779447804478144782447834478444785447864478744788447894479044791447924479344794447954479644797447984479944800448014480244803448044480544806448074480844809448104481144812448134481444815448164481744818448194482044821448224482344824448254482644827448284482944830448314483244833448344483544836448374483844839448404484144842448434484444845448464484744848448494485044851448524485344854448554485644857448584485944860448614486244863448644486544866448674486844869448704487144872448734487444875448764487744878448794488044881448824488344884448854488644887448884488944890448914489244893448944489544896448974489844899449004490144902449034490444905449064490744908449094491044911449124491344914449154491644917449184491944920449214492244923449244492544926449274492844929449304493144932449334493444935449364493744938449394494044941449424494344944449454494644947449484494944950449514495244953449544495544956449574495844959449604496144962449634496444965449664496744968449694497044971449724497344974449754497644977449784497944980449814498244983449844498544986449874498844989449904499144992449934499444995449964499744998449994500045001450024500345004450054500645007450084500945010450114501245013450144501545016450174501845019450204502145022450234502445025450264502745028450294503045031450324503345034450354503645037450384503945040450414504245043450444504545046450474504845049450504505145052450534505445055450564505745058450594506045061450624506345064450654506645067450684506945070450714507245073450744507545076450774507845079450804508145082450834508445085450864508745088450894509045091450924509345094450954509645097450984509945100451014510245103451044510545106451074510845109451104511145112451134511445115451164511745118451194512045121451224512345124451254512645127451284512945130451314513245133451344513545136451374513845139451404514145142451434514445145451464514745148451494515045151451524515345154451554515645157451584515945160451614516245163451644516545166451674516845169451704517145172451734517445175451764517745178451794518045181451824518345184451854518645187451884518945190451914519245193451944519545196451974519845199452004520145202452034520445205452064520745208452094521045211452124521345214452154521645217452184521945220452214522245223452244522545226452274522845229452304523145232452334523445235452364523745238452394524045241452424524345244452454524645247452484524945250452514525245253452544525545256452574525845259452604526145262452634526445265452664526745268452694527045271452724527345274452754527645277452784527945280452814528245283452844528545286452874528845289452904529145292452934529445295452964529745298452994530045301453024530345304453054530645307453084530945310453114531245313453144531545316453174531845319453204532145322453234532445325453264532745328453294533045331453324533345334453354533645337453384533945340453414534245343453444534545346453474534845349453504535145352453534535445355453564535745358453594536045361453624536345364453654536645367453684536945370453714537245373453744537545376453774537845379453804538145382453834538445385453864538745388453894539045391453924539345394453954539645397453984539945400454014540245403454044540545406454074540845409454104541145412454134541445415454164541745418454194542045421454224542345424454254542645427454284542945430454314543245433454344543545436454374543845439454404544145442454434544445445454464544745448454494545045451454524545345454454554545645457454584545945460454614546245463454644546545466454674546845469454704547145472454734547445475454764547745478454794548045481454824548345484454854548645487454884548945490454914549245493454944549545496454974549845499455004550145502455034550445505455064550745508455094551045511455124551345514455154551645517455184551945520455214552245523455244552545526455274552845529455304553145532455334553445535455364553745538455394554045541455424554345544455454554645547455484554945550455514555245553455544555545556455574555845559455604556145562455634556445565455664556745568455694557045571455724557345574455754557645577455784557945580455814558245583455844558545586455874558845589455904559145592455934559445595455964559745598455994560045601456024560345604456054560645607456084560945610456114561245613456144561545616456174561845619456204562145622456234562445625456264562745628456294563045631456324563345634456354563645637456384563945640456414564245643456444564545646456474564845649456504565145652456534565445655456564565745658456594566045661456624566345664456654566645667456684566945670456714567245673456744567545676456774567845679456804568145682456834568445685456864568745688456894569045691456924569345694456954569645697456984569945700457014570245703457044570545706457074570845709457104571145712457134571445715457164571745718457194572045721457224572345724457254572645727457284572945730457314573245733457344573545736457374573845739457404574145742457434574445745457464574745748457494575045751457524575345754457554575645757457584575945760457614576245763457644576545766457674576845769457704577145772457734577445775457764577745778457794578045781457824578345784457854578645787457884578945790457914579245793457944579545796457974579845799458004580145802458034580445805458064580745808458094581045811458124581345814458154581645817458184581945820458214582245823458244582545826458274582845829458304583145832458334583445835458364583745838458394584045841458424584345844458454584645847458484584945850458514585245853458544585545856458574585845859458604586145862458634586445865458664586745868458694587045871458724587345874458754587645877458784587945880458814588245883458844588545886458874588845889458904589145892458934589445895458964589745898458994590045901459024590345904459054590645907459084590945910459114591245913459144591545916459174591845919459204592145922459234592445925459264592745928459294593045931459324593345934459354593645937459384593945940459414594245943459444594545946459474594845949459504595145952459534595445955459564595745958459594596045961459624596345964459654596645967459684596945970459714597245973459744597545976459774597845979459804598145982459834598445985459864598745988459894599045991459924599345994459954599645997459984599946000460014600246003460044600546006460074600846009460104601146012460134601446015460164601746018460194602046021460224602346024460254602646027460284602946030460314603246033460344603546036460374603846039460404604146042460434604446045460464604746048460494605046051460524605346054460554605646057460584605946060460614606246063460644606546066460674606846069460704607146072460734607446075460764607746078460794608046081460824608346084460854608646087460884608946090460914609246093460944609546096460974609846099461004610146102461034610446105461064610746108461094611046111461124611346114461154611646117461184611946120461214612246123461244612546126461274612846129461304613146132461334613446135461364613746138461394614046141461424614346144461454614646147461484614946150461514615246153461544615546156461574615846159461604616146162461634616446165461664616746168461694617046171461724617346174461754617646177461784617946180461814618246183461844618546186461874618846189461904619146192461934619446195461964619746198461994620046201462024620346204462054620646207462084620946210462114621246213462144621546216462174621846219462204622146222462234622446225462264622746228462294623046231462324623346234462354623646237462384623946240462414624246243462444624546246462474624846249462504625146252462534625446255462564625746258462594626046261462624626346264462654626646267462684626946270462714627246273462744627546276462774627846279462804628146282462834628446285462864628746288462894629046291462924629346294462954629646297462984629946300463014630246303463044630546306463074630846309463104631146312463134631446315463164631746318463194632046321463224632346324463254632646327463284632946330463314633246333463344633546336463374633846339463404634146342463434634446345463464634746348463494635046351463524635346354463554635646357463584635946360463614636246363463644636546366463674636846369463704637146372463734637446375463764637746378463794638046381463824638346384463854638646387463884638946390463914639246393463944639546396463974639846399464004640146402464034640446405464064640746408464094641046411464124641346414464154641646417464184641946420464214642246423464244642546426464274642846429464304643146432464334643446435464364643746438464394644046441464424644346444464454644646447464484644946450464514645246453464544645546456464574645846459464604646146462464634646446465464664646746468464694647046471464724647346474464754647646477464784647946480464814648246483464844648546486464874648846489464904649146492464934649446495464964649746498464994650046501465024650346504465054650646507465084650946510465114651246513465144651546516465174651846519465204652146522465234652446525465264652746528465294653046531465324653346534465354653646537465384653946540465414654246543465444654546546465474654846549465504655146552465534655446555465564655746558465594656046561465624656346564465654656646567465684656946570465714657246573465744657546576465774657846579465804658146582465834658446585465864658746588465894659046591465924659346594465954659646597465984659946600466014660246603466044660546606466074660846609466104661146612466134661446615466164661746618466194662046621466224662346624466254662646627466284662946630466314663246633466344663546636466374663846639466404664146642466434664446645466464664746648466494665046651466524665346654466554665646657466584665946660466614666246663466644666546666466674666846669466704667146672466734667446675466764667746678466794668046681466824668346684466854668646687466884668946690466914669246693466944669546696466974669846699467004670146702467034670446705467064670746708467094671046711467124671346714467154671646717467184671946720467214672246723467244672546726467274672846729467304673146732467334673446735467364673746738467394674046741467424674346744467454674646747467484674946750467514675246753467544675546756467574675846759467604676146762467634676446765467664676746768467694677046771467724677346774467754677646777467784677946780467814678246783467844678546786467874678846789467904679146792467934679446795467964679746798467994680046801468024680346804468054680646807468084680946810468114681246813468144681546816468174681846819468204682146822468234682446825468264682746828468294683046831468324683346834468354683646837468384683946840468414684246843468444684546846468474684846849468504685146852468534685446855468564685746858468594686046861468624686346864468654686646867468684686946870468714687246873468744687546876468774687846879468804688146882468834688446885468864688746888468894689046891468924689346894468954689646897468984689946900469014690246903469044690546906469074690846909469104691146912469134691446915469164691746918469194692046921469224692346924469254692646927469284692946930469314693246933469344693546936469374693846939469404694146942469434694446945469464694746948469494695046951469524695346954469554695646957469584695946960469614696246963469644696546966469674696846969469704697146972469734697446975469764697746978469794698046981469824698346984469854698646987469884698946990469914699246993469944699546996469974699846999470004700147002470034700447005470064700747008470094701047011470124701347014470154701647017470184701947020470214702247023470244702547026470274702847029470304703147032470334703447035470364703747038470394704047041470424704347044470454704647047470484704947050470514705247053470544705547056470574705847059470604706147062470634706447065470664706747068470694707047071470724707347074470754707647077470784707947080470814708247083470844708547086470874708847089470904709147092470934709447095470964709747098470994710047101471024710347104471054710647107471084710947110471114711247113471144711547116471174711847119471204712147122471234712447125471264712747128471294713047131471324713347134471354713647137471384713947140471414714247143471444714547146471474714847149471504715147152471534715447155471564715747158471594716047161471624716347164471654716647167471684716947170471714717247173471744717547176471774717847179471804718147182471834718447185471864718747188471894719047191471924719347194471954719647197471984719947200472014720247203472044720547206472074720847209472104721147212472134721447215472164721747218472194722047221472224722347224472254722647227472284722947230472314723247233472344723547236472374723847239472404724147242472434724447245472464724747248472494725047251472524725347254472554725647257472584725947260472614726247263472644726547266472674726847269472704727147272472734727447275472764727747278472794728047281472824728347284472854728647287472884728947290472914729247293472944729547296472974729847299473004730147302473034730447305473064730747308473094731047311473124731347314473154731647317473184731947320473214732247323473244732547326473274732847329473304733147332473334733447335473364733747338473394734047341473424734347344473454734647347473484734947350473514735247353473544735547356473574735847359473604736147362473634736447365473664736747368473694737047371473724737347374473754737647377473784737947380473814738247383473844738547386473874738847389473904739147392473934739447395473964739747398473994740047401474024740347404474054740647407474084740947410474114741247413474144741547416474174741847419474204742147422474234742447425474264742747428474294743047431474324743347434474354743647437474384743947440474414744247443474444744547446474474744847449474504745147452474534745447455474564745747458474594746047461474624746347464474654746647467474684746947470474714747247473474744747547476474774747847479474804748147482474834748447485474864748747488474894749047491474924749347494474954749647497474984749947500475014750247503475044750547506475074750847509475104751147512475134751447515475164751747518475194752047521475224752347524475254752647527475284752947530475314753247533475344753547536475374753847539475404754147542475434754447545475464754747548475494755047551475524755347554475554755647557475584755947560475614756247563475644756547566475674756847569475704757147572475734757447575475764757747578475794758047581475824758347584475854758647587475884758947590475914759247593475944759547596475974759847599476004760147602476034760447605476064760747608476094761047611476124761347614476154761647617476184761947620476214762247623476244762547626476274762847629476304763147632476334763447635476364763747638476394764047641476424764347644476454764647647476484764947650476514765247653476544765547656476574765847659476604766147662476634766447665476664766747668476694767047671476724767347674476754767647677476784767947680476814768247683476844768547686476874768847689476904769147692476934769447695476964769747698476994770047701477024770347704477054770647707477084770947710477114771247713477144771547716477174771847719477204772147722477234772447725477264772747728477294773047731477324773347734477354773647737477384773947740477414774247743477444774547746477474774847749477504775147752477534775447755477564775747758477594776047761477624776347764477654776647767477684776947770477714777247773477744777547776477774777847779477804778147782477834778447785477864778747788477894779047791477924779347794477954779647797477984779947800478014780247803478044780547806478074780847809478104781147812478134781447815478164781747818478194782047821478224782347824478254782647827478284782947830478314783247833478344783547836478374783847839478404784147842478434784447845478464784747848478494785047851478524785347854478554785647857478584785947860478614786247863478644786547866478674786847869478704787147872478734787447875478764787747878478794788047881478824788347884478854788647887478884788947890478914789247893478944789547896478974789847899479004790147902479034790447905479064790747908479094791047911479124791347914479154791647917479184791947920479214792247923479244792547926479274792847929479304793147932479334793447935479364793747938479394794047941479424794347944479454794647947479484794947950479514795247953479544795547956479574795847959479604796147962479634796447965479664796747968479694797047971479724797347974479754797647977479784797947980479814798247983479844798547986479874798847989479904799147992479934799447995479964799747998479994800048001480024800348004480054800648007480084800948010480114801248013480144801548016480174801848019480204802148022480234802448025480264802748028480294803048031480324803348034480354803648037480384803948040480414804248043480444804548046480474804848049480504805148052480534805448055480564805748058480594806048061480624806348064480654806648067480684806948070480714807248073480744807548076480774807848079480804808148082480834808448085480864808748088480894809048091480924809348094480954809648097480984809948100481014810248103481044810548106481074810848109481104811148112481134811448115481164811748118481194812048121481224812348124481254812648127481284812948130481314813248133481344813548136481374813848139481404814148142481434814448145481464814748148481494815048151481524815348154481554815648157481584815948160481614816248163481644816548166481674816848169481704817148172481734817448175481764817748178481794818048181481824818348184481854818648187481884818948190481914819248193481944819548196481974819848199482004820148202482034820448205482064820748208482094821048211482124821348214482154821648217482184821948220482214822248223482244822548226482274822848229482304823148232482334823448235482364823748238482394824048241482424824348244482454824648247482484824948250482514825248253482544825548256482574825848259482604826148262482634826448265482664826748268482694827048271482724827348274482754827648277482784827948280482814828248283482844828548286482874828848289482904829148292482934829448295482964829748298482994830048301483024830348304483054830648307483084830948310483114831248313483144831548316483174831848319483204832148322483234832448325483264832748328483294833048331483324833348334483354833648337483384833948340483414834248343483444834548346483474834848349483504835148352483534835448355483564835748358483594836048361483624836348364483654836648367483684836948370483714837248373483744837548376483774837848379483804838148382483834838448385483864838748388483894839048391483924839348394483954839648397483984839948400484014840248403484044840548406484074840848409484104841148412484134841448415484164841748418484194842048421484224842348424484254842648427484284842948430484314843248433484344843548436484374843848439484404844148442484434844448445484464844748448484494845048451484524845348454484554845648457484584845948460484614846248463484644846548466484674846848469484704847148472484734847448475484764847748478484794848048481484824848348484484854848648487484884848948490484914849248493484944849548496484974849848499485004850148502485034850448505485064850748508485094851048511485124851348514485154851648517485184851948520485214852248523485244852548526485274852848529485304853148532485334853448535485364853748538485394854048541485424854348544485454854648547485484854948550485514855248553485544855548556485574855848559485604856148562485634856448565485664856748568485694857048571485724857348574485754857648577485784857948580485814858248583485844858548586485874858848589485904859148592485934859448595485964859748598485994860048601486024860348604486054860648607486084860948610486114861248613486144861548616486174861848619486204862148622486234862448625486264862748628486294863048631486324863348634486354863648637486384863948640486414864248643486444864548646486474864848649486504865148652486534865448655486564865748658486594866048661486624866348664486654866648667486684866948670486714867248673486744867548676486774867848679486804868148682486834868448685486864868748688486894869048691486924869348694486954869648697486984869948700487014870248703487044870548706487074870848709487104871148712487134871448715487164871748718487194872048721487224872348724487254872648727487284872948730487314873248733487344873548736487374873848739487404874148742487434874448745487464874748748487494875048751487524875348754487554875648757487584875948760487614876248763487644876548766487674876848769487704877148772487734877448775487764877748778487794878048781487824878348784487854878648787487884878948790487914879248793487944879548796487974879848799488004880148802488034880448805488064880748808488094881048811488124881348814488154881648817488184881948820488214882248823488244882548826488274882848829488304883148832488334883448835488364883748838488394884048841488424884348844488454884648847488484884948850488514885248853488544885548856488574885848859488604886148862488634886448865488664886748868488694887048871488724887348874488754887648877488784887948880488814888248883488844888548886488874888848889488904889148892488934889448895488964889748898488994890048901489024890348904489054890648907489084890948910489114891248913489144891548916489174891848919489204892148922489234892448925489264892748928489294893048931489324893348934489354893648937489384893948940489414894248943489444894548946489474894848949489504895148952489534895448955489564895748958489594896048961489624896348964489654896648967489684896948970489714897248973489744897548976489774897848979489804898148982489834898448985489864898748988489894899048991489924899348994489954899648997489984899949000490014900249003490044900549006490074900849009490104901149012490134901449015490164901749018490194902049021490224902349024490254902649027490284902949030490314903249033490344903549036490374903849039490404904149042490434904449045490464904749048490494905049051490524905349054490554905649057490584905949060490614906249063490644906549066490674906849069490704907149072490734907449075490764907749078490794908049081490824908349084490854908649087490884908949090490914909249093490944909549096490974909849099491004910149102491034910449105491064910749108491094911049111491124911349114491154911649117491184911949120491214912249123491244912549126491274912849129491304913149132491334913449135491364913749138491394914049141491424914349144491454914649147491484914949150491514915249153491544915549156491574915849159491604916149162491634916449165491664916749168491694917049171491724917349174491754917649177491784917949180491814918249183491844918549186491874918849189491904919149192491934919449195491964919749198491994920049201492024920349204492054920649207492084920949210492114921249213492144921549216492174921849219492204922149222492234922449225492264922749228492294923049231492324923349234492354923649237492384923949240492414924249243492444924549246492474924849249492504925149252492534925449255492564925749258492594926049261492624926349264492654926649267492684926949270492714927249273492744927549276492774927849279492804928149282492834928449285492864928749288492894929049291492924929349294492954929649297492984929949300493014930249303493044930549306493074930849309493104931149312493134931449315493164931749318493194932049321493224932349324493254932649327493284932949330493314933249333493344933549336493374933849339493404934149342493434934449345493464934749348493494935049351493524935349354493554935649357493584935949360493614936249363493644936549366493674936849369493704937149372493734937449375493764937749378493794938049381493824938349384493854938649387493884938949390493914939249393493944939549396493974939849399494004940149402494034940449405494064940749408494094941049411494124941349414494154941649417494184941949420494214942249423494244942549426494274942849429494304943149432494334943449435494364943749438494394944049441494424944349444494454944649447494484944949450494514945249453494544945549456494574945849459494604946149462494634946449465494664946749468494694947049471494724947349474494754947649477494784947949480494814948249483494844948549486494874948849489494904949149492494934949449495494964949749498494994950049501495024950349504495054950649507495084950949510495114951249513495144951549516495174951849519495204952149522495234952449525495264952749528495294953049531495324953349534495354953649537495384953949540495414954249543495444954549546495474954849549495504955149552495534955449555495564955749558495594956049561495624956349564495654956649567495684956949570495714957249573495744957549576495774957849579495804958149582495834958449585495864958749588495894959049591495924959349594495954959649597495984959949600496014960249603496044960549606496074960849609496104961149612496134961449615496164961749618496194962049621496224962349624496254962649627496284962949630496314963249633496344963549636496374963849639496404964149642496434964449645496464964749648496494965049651496524965349654496554965649657496584965949660496614966249663496644966549666496674966849669496704967149672496734967449675496764967749678496794968049681496824968349684496854968649687496884968949690496914969249693496944969549696496974969849699497004970149702497034970449705497064970749708497094971049711497124971349714497154971649717497184971949720497214972249723497244972549726497274972849729497304973149732497334973449735497364973749738497394974049741497424974349744497454974649747497484974949750497514975249753497544975549756497574975849759497604976149762497634976449765497664976749768497694977049771497724977349774497754977649777497784977949780497814978249783497844978549786497874978849789497904979149792497934979449795497964979749798497994980049801498024980349804498054980649807498084980949810498114981249813498144981549816498174981849819498204982149822498234982449825498264982749828498294983049831498324983349834498354983649837498384983949840498414984249843498444984549846498474984849849498504985149852498534985449855498564985749858498594986049861498624986349864498654986649867498684986949870498714987249873498744987549876498774987849879498804988149882498834988449885498864988749888498894989049891498924989349894498954989649897498984989949900499014990249903499044990549906499074990849909499104991149912499134991449915499164991749918499194992049921499224992349924499254992649927499284992949930499314993249933499344993549936499374993849939499404994149942499434994449945499464994749948499494995049951499524995349954499554995649957499584995949960499614996249963499644996549966499674996849969499704997149972499734997449975499764997749978499794998049981499824998349984499854998649987499884998949990499914999249993499944999549996499974999849999500005000150002500035000450005500065000750008500095001050011500125001350014500155001650017500185001950020500215002250023500245002550026500275002850029500305003150032500335003450035500365003750038500395004050041500425004350044500455004650047500485004950050500515005250053500545005550056500575005850059500605006150062500635006450065500665006750068500695007050071500725007350074500755007650077500785007950080500815008250083500845008550086500875008850089500905009150092500935009450095500965009750098500995010050101501025010350104501055010650107501085010950110501115011250113501145011550116501175011850119501205012150122501235012450125501265012750128501295013050131501325013350134501355013650137501385013950140501415014250143501445014550146501475014850149501505015150152501535015450155501565015750158501595016050161501625016350164501655016650167501685016950170501715017250173501745017550176501775017850179501805018150182501835018450185501865018750188501895019050191501925019350194501955019650197501985019950200502015020250203502045020550206502075020850209502105021150212502135021450215502165021750218502195022050221502225022350224502255022650227502285022950230502315023250233502345023550236502375023850239502405024150242502435024450245502465024750248502495025050251502525025350254502555025650257502585025950260502615026250263502645026550266502675026850269502705027150272502735027450275502765027750278502795028050281502825028350284502855028650287502885028950290502915029250293502945029550296502975029850299503005030150302503035030450305503065030750308503095031050311503125031350314503155031650317503185031950320503215032250323503245032550326503275032850329503305033150332503335033450335503365033750338503395034050341503425034350344503455034650347503485034950350503515035250353503545035550356503575035850359503605036150362503635036450365503665036750368503695037050371503725037350374503755037650377503785037950380503815038250383503845038550386503875038850389503905039150392503935039450395503965039750398503995040050401504025040350404504055040650407504085040950410504115041250413504145041550416504175041850419504205042150422504235042450425504265042750428504295043050431504325043350434504355043650437504385043950440504415044250443504445044550446504475044850449504505045150452504535045450455504565045750458504595046050461504625046350464504655046650467504685046950470504715047250473504745047550476504775047850479504805048150482504835048450485504865048750488504895049050491504925049350494504955049650497504985049950500505015050250503505045050550506505075050850509505105051150512505135051450515505165051750518505195052050521505225052350524505255052650527505285052950530505315053250533505345053550536505375053850539505405054150542505435054450545505465054750548505495055050551505525055350554505555055650557505585055950560505615056250563505645056550566505675056850569505705057150572505735057450575505765057750578505795058050581505825058350584505855058650587505885058950590505915059250593505945059550596505975059850599506005060150602506035060450605506065060750608506095061050611506125061350614506155061650617506185061950620506215062250623506245062550626506275062850629506305063150632506335063450635506365063750638506395064050641506425064350644506455064650647506485064950650506515065250653506545065550656506575065850659506605066150662506635066450665506665066750668506695067050671506725067350674506755067650677506785067950680506815068250683506845068550686506875068850689506905069150692506935069450695506965069750698506995070050701507025070350704507055070650707507085070950710507115071250713507145071550716507175071850719507205072150722507235072450725507265072750728507295073050731507325073350734507355073650737507385073950740507415074250743507445074550746507475074850749507505075150752507535075450755507565075750758507595076050761507625076350764507655076650767507685076950770507715077250773507745077550776507775077850779507805078150782507835078450785507865078750788507895079050791507925079350794507955079650797507985079950800508015080250803508045080550806508075080850809508105081150812508135081450815508165081750818508195082050821508225082350824508255082650827508285082950830508315083250833508345083550836508375083850839508405084150842508435084450845508465084750848508495085050851508525085350854508555085650857508585085950860508615086250863508645086550866508675086850869508705087150872508735087450875508765087750878508795088050881508825088350884508855088650887508885088950890508915089250893508945089550896508975089850899509005090150902509035090450905509065090750908509095091050911509125091350914509155091650917509185091950920509215092250923509245092550926509275092850929509305093150932509335093450935509365093750938509395094050941509425094350944509455094650947509485094950950509515095250953509545095550956509575095850959509605096150962509635096450965509665096750968509695097050971509725097350974509755097650977509785097950980509815098250983509845098550986509875098850989509905099150992509935099450995509965099750998509995100051001510025100351004510055100651007510085100951010510115101251013510145101551016510175101851019510205102151022510235102451025510265102751028510295103051031510325103351034510355103651037510385103951040510415104251043510445104551046510475104851049510505105151052510535105451055510565105751058510595106051061510625106351064510655106651067510685106951070510715107251073510745107551076510775107851079510805108151082510835108451085510865108751088510895109051091510925109351094510955109651097510985109951100511015110251103511045110551106511075110851109511105111151112511135111451115511165111751118511195112051121511225112351124511255112651127511285112951130511315113251133511345113551136511375113851139511405114151142511435114451145511465114751148511495115051151511525115351154511555115651157511585115951160511615116251163511645116551166511675116851169511705117151172511735117451175511765117751178511795118051181511825118351184511855118651187511885118951190511915119251193511945119551196511975119851199512005120151202512035120451205512065120751208512095121051211512125121351214512155121651217512185121951220512215122251223512245122551226512275122851229512305123151232512335123451235512365123751238512395124051241512425124351244512455124651247512485124951250512515125251253512545125551256512575125851259512605126151262512635126451265512665126751268512695127051271512725127351274512755127651277512785127951280512815128251283512845128551286512875128851289512905129151292512935129451295512965129751298512995130051301513025130351304513055130651307513085130951310513115131251313513145131551316513175131851319513205132151322513235132451325513265132751328513295133051331513325133351334513355133651337513385133951340513415134251343513445134551346513475134851349513505135151352513535135451355513565135751358513595136051361513625136351364513655136651367513685136951370513715137251373513745137551376513775137851379513805138151382513835138451385513865138751388513895139051391513925139351394513955139651397513985139951400514015140251403514045140551406514075140851409514105141151412514135141451415514165141751418514195142051421514225142351424514255142651427514285142951430514315143251433514345143551436514375143851439514405144151442514435144451445514465144751448514495145051451514525145351454514555145651457514585145951460514615146251463514645146551466514675146851469514705147151472514735147451475514765147751478514795148051481514825148351484514855148651487514885148951490514915149251493514945149551496514975149851499515005150151502515035150451505515065150751508515095151051511515125151351514515155151651517515185151951520515215152251523515245152551526515275152851529515305153151532515335153451535515365153751538515395154051541515425154351544515455154651547515485154951550515515155251553515545155551556515575155851559515605156151562515635156451565515665156751568515695157051571515725157351574515755157651577515785157951580515815158251583515845158551586515875158851589515905159151592515935159451595515965159751598515995160051601516025160351604516055160651607516085160951610516115161251613516145161551616516175161851619516205162151622516235162451625516265162751628516295163051631516325163351634516355163651637516385163951640516415164251643516445164551646516475164851649516505165151652516535165451655516565165751658516595166051661516625166351664516655166651667516685166951670516715167251673516745167551676516775167851679516805168151682516835168451685516865168751688516895169051691516925169351694516955169651697516985169951700517015170251703517045170551706517075170851709517105171151712517135171451715517165171751718517195172051721517225172351724517255172651727517285172951730517315173251733517345173551736517375173851739517405174151742517435174451745517465174751748517495175051751517525175351754517555175651757517585175951760517615176251763517645176551766517675176851769517705177151772517735177451775517765177751778517795178051781517825178351784517855178651787517885178951790517915179251793517945179551796517975179851799518005180151802518035180451805518065180751808518095181051811518125181351814518155181651817518185181951820518215182251823518245182551826518275182851829518305183151832518335183451835518365183751838518395184051841518425184351844518455184651847518485184951850518515185251853518545185551856518575185851859518605186151862518635186451865518665186751868518695187051871518725187351874518755187651877518785187951880518815188251883518845188551886518875188851889518905189151892518935189451895518965189751898518995190051901519025190351904519055190651907519085190951910519115191251913519145191551916519175191851919519205192151922519235192451925519265192751928519295193051931519325193351934519355193651937519385193951940519415194251943519445194551946519475194851949519505195151952519535195451955519565195751958519595196051961519625196351964519655196651967519685196951970519715197251973519745197551976519775197851979519805198151982519835198451985519865198751988519895199051991519925199351994519955199651997519985199952000520015200252003520045200552006520075200852009520105201152012520135201452015520165201752018520195202052021520225202352024520255202652027520285202952030520315203252033520345203552036520375203852039520405204152042520435204452045520465204752048520495205052051520525205352054520555205652057520585205952060520615206252063520645206552066520675206852069520705207152072520735207452075520765207752078520795208052081520825208352084520855208652087520885208952090520915209252093520945209552096520975209852099521005210152102521035210452105521065210752108521095211052111521125211352114521155211652117521185211952120521215212252123521245212552126521275212852129521305213152132521335213452135521365213752138521395214052141521425214352144521455214652147521485214952150521515215252153521545215552156521575215852159521605216152162521635216452165521665216752168521695217052171521725217352174521755217652177521785217952180521815218252183521845218552186521875218852189521905219152192521935219452195521965219752198521995220052201522025220352204522055220652207522085220952210522115221252213522145221552216522175221852219522205222152222522235222452225522265222752228522295223052231522325223352234522355223652237522385223952240522415224252243522445224552246522475224852249522505225152252522535225452255522565225752258522595226052261522625226352264522655226652267522685226952270522715227252273522745227552276522775227852279522805228152282522835228452285522865228752288522895229052291522925229352294522955229652297522985229952300523015230252303523045230552306523075230852309523105231152312523135231452315523165231752318523195232052321523225232352324523255232652327523285232952330523315233252333523345233552336523375233852339523405234152342523435234452345523465234752348523495235052351523525235352354523555235652357523585235952360523615236252363523645236552366523675236852369523705237152372523735237452375523765237752378523795238052381523825238352384523855238652387523885238952390523915239252393523945239552396523975239852399524005240152402524035240452405524065240752408524095241052411524125241352414524155241652417524185241952420524215242252423524245242552426524275242852429524305243152432524335243452435524365243752438524395244052441524425244352444524455244652447524485244952450524515245252453524545245552456524575245852459524605246152462524635246452465524665246752468524695247052471524725247352474524755247652477524785247952480524815248252483524845248552486524875248852489524905249152492524935249452495524965249752498524995250052501525025250352504525055250652507525085250952510525115251252513525145251552516525175251852519525205252152522525235252452525525265252752528525295253052531525325253352534525355253652537525385253952540525415254252543525445254552546525475254852549525505255152552525535255452555525565255752558525595256052561525625256352564525655256652567525685256952570525715257252573525745257552576525775257852579525805258152582525835258452585525865258752588525895259052591525925259352594525955259652597525985259952600526015260252603526045260552606526075260852609526105261152612526135261452615526165261752618526195262052621526225262352624526255262652627526285262952630526315263252633526345263552636526375263852639526405264152642526435264452645526465264752648526495265052651526525265352654526555265652657526585265952660526615266252663526645266552666526675266852669526705267152672526735267452675526765267752678526795268052681526825268352684526855268652687526885268952690526915269252693526945269552696526975269852699527005270152702527035270452705527065270752708527095271052711527125271352714527155271652717527185271952720527215272252723527245272552726527275272852729527305273152732527335273452735527365273752738527395274052741527425274352744527455274652747527485274952750527515275252753527545275552756527575275852759527605276152762527635276452765527665276752768527695277052771527725277352774527755277652777527785277952780527815278252783527845278552786527875278852789527905279152792527935279452795527965279752798527995280052801528025280352804528055280652807528085280952810528115281252813528145281552816528175281852819528205282152822528235282452825528265282752828528295283052831528325283352834528355283652837528385283952840528415284252843528445284552846528475284852849528505285152852528535285452855528565285752858528595286052861528625286352864528655286652867528685286952870528715287252873528745287552876528775287852879528805288152882528835288452885528865288752888528895289052891528925289352894528955289652897528985289952900529015290252903529045290552906529075290852909529105291152912529135291452915529165291752918529195292052921529225292352924529255292652927529285292952930529315293252933529345293552936529375293852939529405294152942529435294452945529465294752948529495295052951529525295352954529555295652957529585295952960529615296252963529645296552966529675296852969529705297152972529735297452975529765297752978529795298052981529825298352984529855298652987529885298952990529915299252993529945299552996529975299852999530005300153002530035300453005530065300753008530095301053011530125301353014530155301653017530185301953020530215302253023530245302553026530275302853029530305303153032530335303453035530365303753038530395304053041530425304353044530455304653047530485304953050530515305253053530545305553056530575305853059530605306153062530635306453065530665306753068530695307053071530725307353074530755307653077530785307953080530815308253083530845308553086530875308853089530905309153092530935309453095530965309753098530995310053101531025310353104531055310653107531085310953110531115311253113531145311553116531175311853119531205312153122531235312453125531265312753128531295313053131531325313353134531355313653137531385313953140531415314253143531445314553146531475314853149531505315153152531535315453155531565315753158531595316053161531625316353164531655316653167531685316953170531715317253173531745317553176531775317853179531805318153182531835318453185531865318753188531895319053191531925319353194531955319653197531985319953200532015320253203532045320553206532075320853209532105321153212532135321453215532165321753218532195322053221532225322353224532255322653227532285322953230532315323253233532345323553236532375323853239532405324153242532435324453245532465324753248532495325053251532525325353254532555325653257532585325953260532615326253263532645326553266532675326853269532705327153272532735327453275532765327753278532795328053281532825328353284532855328653287532885328953290532915329253293532945329553296532975329853299533005330153302533035330453305533065330753308533095331053311533125331353314533155331653317533185331953320533215332253323533245332553326533275332853329533305333153332533335333453335533365333753338533395334053341533425334353344533455334653347533485334953350533515335253353533545335553356533575335853359533605336153362533635336453365533665336753368533695337053371533725337353374533755337653377533785337953380533815338253383533845338553386533875338853389533905339153392533935339453395533965339753398533995340053401534025340353404534055340653407534085340953410534115341253413534145341553416534175341853419534205342153422534235342453425534265342753428534295343053431534325343353434534355343653437534385343953440534415344253443534445344553446534475344853449534505345153452534535345453455534565345753458534595346053461534625346353464534655346653467534685346953470534715347253473534745347553476534775347853479534805348153482534835348453485534865348753488534895349053491534925349353494534955349653497534985349953500535015350253503535045350553506535075350853509535105351153512535135351453515535165351753518535195352053521535225352353524535255352653527535285352953530535315353253533535345353553536535375353853539535405354153542535435354453545535465354753548535495355053551535525355353554535555355653557535585355953560535615356253563535645356553566535675356853569535705357153572535735357453575535765357753578535795358053581535825358353584535855358653587535885358953590535915359253593535945359553596535975359853599536005360153602536035360453605536065360753608536095361053611536125361353614536155361653617536185361953620536215362253623536245362553626536275362853629536305363153632536335363453635536365363753638536395364053641536425364353644536455364653647536485364953650536515365253653536545365553656536575365853659536605366153662536635366453665536665366753668536695367053671536725367353674536755367653677536785367953680536815368253683536845368553686536875368853689536905369153692536935369453695536965369753698536995370053701537025370353704537055370653707537085370953710537115371253713537145371553716537175371853719537205372153722537235372453725537265372753728537295373053731537325373353734537355373653737537385373953740537415374253743537445374553746537475374853749537505375153752537535375453755537565375753758537595376053761537625376353764537655376653767537685376953770537715377253773537745377553776537775377853779537805378153782537835378453785537865378753788537895379053791537925379353794537955379653797537985379953800538015380253803538045380553806538075380853809538105381153812538135381453815538165381753818538195382053821538225382353824538255382653827538285382953830538315383253833538345383553836538375383853839538405384153842538435384453845538465384753848538495385053851538525385353854538555385653857538585385953860538615386253863538645386553866538675386853869538705387153872538735387453875538765387753878538795388053881538825388353884538855388653887538885388953890538915389253893538945389553896538975389853899539005390153902539035390453905539065390753908539095391053911539125391353914539155391653917539185391953920539215392253923539245392553926539275392853929539305393153932539335393453935539365393753938539395394053941539425394353944539455394653947539485394953950539515395253953539545395553956539575395853959539605396153962539635396453965539665396753968539695397053971539725397353974539755397653977539785397953980539815398253983539845398553986539875398853989539905399153992539935399453995539965399753998539995400054001540025400354004540055400654007540085400954010540115401254013540145401554016540175401854019540205402154022540235402454025540265402754028540295403054031540325403354034540355403654037540385403954040540415404254043540445404554046540475404854049540505405154052540535405454055540565405754058540595406054061540625406354064540655406654067540685406954070540715407254073540745407554076540775407854079540805408154082540835408454085540865408754088540895409054091540925409354094540955409654097540985409954100541015410254103541045410554106541075410854109541105411154112541135411454115541165411754118541195412054121541225412354124541255412654127541285412954130541315413254133541345413554136541375413854139541405414154142541435414454145541465414754148541495415054151541525415354154541555415654157541585415954160541615416254163541645416554166541675416854169541705417154172541735417454175541765417754178541795418054181541825418354184541855418654187541885418954190541915419254193541945419554196541975419854199542005420154202542035420454205542065420754208542095421054211542125421354214542155421654217542185421954220542215422254223542245422554226542275422854229542305423154232542335423454235542365423754238542395424054241542425424354244542455424654247542485424954250542515425254253542545425554256542575425854259542605426154262542635426454265542665426754268542695427054271542725427354274542755427654277542785427954280542815428254283542845428554286542875428854289542905429154292542935429454295542965429754298542995430054301543025430354304543055430654307543085430954310543115431254313543145431554316543175431854319543205432154322543235432454325543265432754328543295433054331543325433354334543355433654337543385433954340543415434254343543445434554346543475434854349543505435154352543535435454355543565435754358543595436054361543625436354364543655436654367543685436954370543715437254373543745437554376543775437854379543805438154382543835438454385543865438754388543895439054391543925439354394543955439654397543985439954400544015440254403544045440554406544075440854409544105441154412544135441454415544165441754418544195442054421544225442354424544255442654427544285442954430544315443254433544345443554436544375443854439544405444154442544435444454445544465444754448544495445054451544525445354454544555445654457544585445954460544615446254463544645446554466544675446854469544705447154472544735447454475544765447754478544795448054481544825448354484544855448654487544885448954490544915449254493544945449554496544975449854499545005450154502545035450454505545065450754508545095451054511545125451354514545155451654517545185451954520545215452254523545245452554526545275452854529545305453154532545335453454535545365453754538545395454054541545425454354544545455454654547545485454954550545515455254553545545455554556545575455854559545605456154562545635456454565545665456754568545695457054571545725457354574545755457654577545785457954580545815458254583545845458554586545875458854589545905459154592545935459454595545965459754598545995460054601546025460354604546055460654607546085460954610546115461254613546145461554616546175461854619546205462154622546235462454625546265462754628546295463054631546325463354634546355463654637546385463954640546415464254643546445464554646546475464854649546505465154652546535465454655546565465754658546595466054661546625466354664546655466654667546685466954670546715467254673546745467554676546775467854679546805468154682546835468454685546865468754688546895469054691546925469354694546955469654697546985469954700547015470254703547045470554706547075470854709547105471154712547135471454715547165471754718547195472054721547225472354724547255472654727547285472954730547315473254733547345473554736547375473854739547405474154742547435474454745547465474754748547495475054751547525475354754547555475654757547585475954760547615476254763547645476554766547675476854769547705477154772547735477454775547765477754778547795478054781547825478354784547855478654787547885478954790547915479254793547945479554796547975479854799548005480154802548035480454805548065480754808548095481054811548125481354814548155481654817548185481954820548215482254823548245482554826548275482854829548305483154832548335483454835548365483754838548395484054841548425484354844548455484654847548485484954850548515485254853548545485554856548575485854859548605486154862548635486454865548665486754868548695487054871548725487354874548755487654877548785487954880548815488254883548845488554886548875488854889548905489154892548935489454895548965489754898548995490054901549025490354904549055490654907549085490954910549115491254913549145491554916549175491854919549205492154922549235492454925549265492754928549295493054931549325493354934549355493654937549385493954940549415494254943549445494554946549475494854949549505495154952549535495454955549565495754958549595496054961549625496354964549655496654967549685496954970549715497254973549745497554976549775497854979549805498154982549835498454985549865498754988549895499054991549925499354994549955499654997549985499955000550015500255003550045500555006550075500855009550105501155012550135501455015550165501755018550195502055021550225502355024550255502655027550285502955030550315503255033550345503555036550375503855039550405504155042550435504455045550465504755048550495505055051550525505355054550555505655057550585505955060550615506255063550645506555066550675506855069550705507155072550735507455075550765507755078550795508055081550825508355084550855508655087550885508955090550915509255093550945509555096550975509855099551005510155102551035510455105551065510755108551095511055111551125511355114551155511655117551185511955120551215512255123551245512555126551275512855129551305513155132551335513455135551365513755138551395514055141551425514355144551455514655147551485514955150551515515255153551545515555156551575515855159551605516155162551635516455165551665516755168551695517055171551725517355174551755517655177551785517955180551815518255183551845518555186551875518855189551905519155192551935519455195551965519755198551995520055201552025520355204552055520655207552085520955210552115521255213552145521555216552175521855219552205522155222552235522455225552265522755228552295523055231552325523355234552355523655237552385523955240552415524255243552445524555246552475524855249552505525155252552535525455255552565525755258552595526055261552625526355264552655526655267552685526955270552715527255273552745527555276552775527855279552805528155282552835528455285552865528755288552895529055291552925529355294552955529655297552985529955300553015530255303553045530555306553075530855309553105531155312553135531455315553165531755318553195532055321553225532355324553255532655327553285532955330553315533255333553345533555336553375533855339553405534155342553435534455345553465534755348553495535055351553525535355354553555535655357553585535955360553615536255363553645536555366553675536855369553705537155372553735537455375553765537755378553795538055381553825538355384553855538655387553885538955390553915539255393553945539555396553975539855399554005540155402554035540455405554065540755408554095541055411554125541355414554155541655417554185541955420554215542255423554245542555426554275542855429554305543155432554335543455435554365543755438554395544055441554425544355444554455544655447554485544955450554515545255453554545545555456554575545855459554605546155462554635546455465554665546755468554695547055471554725547355474554755547655477554785547955480554815548255483554845548555486554875548855489554905549155492554935549455495554965549755498554995550055501555025550355504555055550655507555085550955510555115551255513555145551555516555175551855519555205552155522555235552455525555265552755528555295553055531555325553355534555355553655537555385553955540555415554255543555445554555546555475554855549555505555155552555535555455555555565555755558555595556055561555625556355564555655556655567555685556955570555715557255573555745557555576555775557855579555805558155582555835558455585555865558755588555895559055591555925559355594555955559655597555985559955600556015560255603556045560555606556075560855609556105561155612556135561455615556165561755618556195562055621556225562355624556255562655627556285562955630556315563255633556345563555636556375563855639556405564155642556435564455645556465564755648556495565055651556525565355654556555565655657556585565955660556615566255663556645566555666556675566855669556705567155672556735567455675556765567755678556795568055681556825568355684556855568655687556885568955690556915569255693556945569555696556975569855699557005570155702557035570455705557065570755708557095571055711557125571355714557155571655717557185571955720557215572255723557245572555726557275572855729557305573155732557335573455735557365573755738557395574055741557425574355744557455574655747557485574955750557515575255753557545575555756557575575855759557605576155762557635576455765557665576755768557695577055771557725577355774557755577655777557785577955780557815578255783557845578555786557875578855789557905579155792557935579455795557965579755798557995580055801558025580355804558055580655807558085580955810558115581255813558145581555816558175581855819558205582155822558235582455825558265582755828558295583055831558325583355834558355583655837558385583955840558415584255843558445584555846558475584855849558505585155852558535585455855558565585755858558595586055861558625586355864558655586655867558685586955870558715587255873558745587555876558775587855879558805588155882558835588455885558865588755888558895589055891558925589355894558955589655897558985589955900559015590255903559045590555906559075590855909559105591155912559135591455915559165591755918559195592055921559225592355924559255592655927559285592955930559315593255933559345593555936559375593855939559405594155942559435594455945559465594755948559495595055951559525595355954559555595655957559585595955960559615596255963559645596555966559675596855969559705597155972559735597455975559765597755978559795598055981559825598355984559855598655987559885598955990559915599255993559945599555996559975599855999560005600156002560035600456005560065600756008560095601056011560125601356014560155601656017560185601956020560215602256023560245602556026560275602856029560305603156032560335603456035560365603756038560395604056041560425604356044560455604656047560485604956050560515605256053560545605556056560575605856059560605606156062560635606456065560665606756068560695607056071560725607356074560755607656077560785607956080560815608256083560845608556086560875608856089560905609156092560935609456095560965609756098560995610056101561025610356104561055610656107561085610956110561115611256113561145611556116561175611856119561205612156122561235612456125561265612756128561295613056131561325613356134561355613656137561385613956140561415614256143561445614556146561475614856149561505615156152561535615456155561565615756158561595616056161561625616356164561655616656167561685616956170561715617256173561745617556176561775617856179561805618156182561835618456185561865618756188561895619056191561925619356194561955619656197561985619956200562015620256203562045620556206562075620856209562105621156212562135621456215562165621756218562195622056221562225622356224562255622656227562285622956230562315623256233562345623556236562375623856239562405624156242562435624456245562465624756248562495625056251562525625356254562555625656257562585625956260562615626256263562645626556266562675626856269562705627156272562735627456275562765627756278562795628056281562825628356284562855628656287562885628956290562915629256293562945629556296562975629856299563005630156302563035630456305563065630756308563095631056311563125631356314563155631656317563185631956320563215632256323563245632556326563275632856329563305633156332563335633456335563365633756338563395634056341563425634356344563455634656347563485634956350563515635256353563545635556356563575635856359563605636156362563635636456365563665636756368563695637056371563725637356374563755637656377563785637956380563815638256383563845638556386563875638856389563905639156392563935639456395563965639756398563995640056401564025640356404564055640656407564085640956410564115641256413564145641556416564175641856419564205642156422564235642456425564265642756428564295643056431564325643356434564355643656437564385643956440564415644256443564445644556446564475644856449564505645156452564535645456455564565645756458564595646056461564625646356464564655646656467564685646956470564715647256473564745647556476564775647856479564805648156482564835648456485564865648756488564895649056491564925649356494564955649656497564985649956500565015650256503565045650556506565075650856509565105651156512565135651456515565165651756518565195652056521565225652356524565255652656527565285652956530565315653256533565345653556536565375653856539565405654156542565435654456545565465654756548565495655056551565525655356554565555655656557565585655956560565615656256563565645656556566565675656856569565705657156572565735657456575565765657756578565795658056581565825658356584565855658656587565885658956590565915659256593565945659556596565975659856599566005660156602566035660456605566065660756608566095661056611566125661356614566155661656617566185661956620566215662256623566245662556626566275662856629566305663156632566335663456635566365663756638566395664056641566425664356644566455664656647566485664956650566515665256653566545665556656566575665856659566605666156662566635666456665566665666756668566695667056671566725667356674566755667656677566785667956680566815668256683566845668556686566875668856689566905669156692566935669456695566965669756698566995670056701567025670356704567055670656707567085670956710567115671256713567145671556716567175671856719567205672156722567235672456725567265672756728567295673056731567325673356734567355673656737567385673956740567415674256743567445674556746567475674856749567505675156752567535675456755567565675756758567595676056761567625676356764567655676656767567685676956770567715677256773567745677556776567775677856779567805678156782567835678456785567865678756788567895679056791567925679356794567955679656797567985679956800568015680256803568045680556806568075680856809568105681156812568135681456815568165681756818568195682056821568225682356824568255682656827568285682956830568315683256833568345683556836568375683856839568405684156842568435684456845568465684756848568495685056851568525685356854568555685656857568585685956860568615686256863568645686556866568675686856869568705687156872568735687456875568765687756878568795688056881568825688356884568855688656887568885688956890568915689256893568945689556896568975689856899569005690156902569035690456905569065690756908569095691056911569125691356914569155691656917569185691956920569215692256923569245692556926569275692856929569305693156932569335693456935569365693756938569395694056941569425694356944569455694656947569485694956950569515695256953569545695556956569575695856959569605696156962569635696456965569665696756968569695697056971569725697356974569755697656977569785697956980569815698256983569845698556986569875698856989569905699156992569935699456995569965699756998569995700057001570025700357004570055700657007570085700957010570115701257013570145701557016570175701857019570205702157022570235702457025570265702757028570295703057031570325703357034570355703657037570385703957040570415704257043570445704557046570475704857049570505705157052570535705457055570565705757058570595706057061570625706357064570655706657067570685706957070570715707257073570745707557076570775707857079570805708157082570835708457085570865708757088570895709057091570925709357094570955709657097570985709957100571015710257103571045710557106571075710857109571105711157112571135711457115571165711757118571195712057121571225712357124571255712657127571285712957130571315713257133571345713557136571375713857139571405714157142571435714457145571465714757148571495715057151571525715357154571555715657157571585715957160571615716257163571645716557166571675716857169571705717157172571735717457175571765717757178571795718057181571825718357184571855718657187571885718957190571915719257193571945719557196571975719857199572005720157202572035720457205572065720757208572095721057211572125721357214572155721657217572185721957220572215722257223572245722557226572275722857229572305723157232572335723457235572365723757238572395724057241572425724357244572455724657247572485724957250572515725257253572545725557256572575725857259572605726157262572635726457265572665726757268572695727057271572725727357274572755727657277572785727957280572815728257283572845728557286572875728857289572905729157292572935729457295572965729757298572995730057301573025730357304573055730657307573085730957310573115731257313573145731557316573175731857319573205732157322573235732457325573265732757328573295733057331573325733357334573355733657337573385733957340573415734257343573445734557346573475734857349573505735157352573535735457355573565735757358573595736057361573625736357364573655736657367573685736957370573715737257373573745737557376573775737857379573805738157382573835738457385573865738757388573895739057391573925739357394573955739657397573985739957400574015740257403574045740557406574075740857409574105741157412574135741457415574165741757418574195742057421574225742357424574255742657427574285742957430574315743257433574345743557436574375743857439574405744157442574435744457445574465744757448574495745057451574525745357454574555745657457574585745957460574615746257463574645746557466574675746857469574705747157472574735747457475574765747757478574795748057481574825748357484574855748657487574885748957490574915749257493574945749557496574975749857499575005750157502575035750457505575065750757508575095751057511575125751357514575155751657517575185751957520575215752257523575245752557526575275752857529575305753157532575335753457535575365753757538575395754057541575425754357544575455754657547575485754957550575515755257553575545755557556575575755857559575605756157562575635756457565575665756757568575695757057571575725757357574575755757657577575785757957580575815758257583575845758557586575875758857589575905759157592575935759457595575965759757598575995760057601576025760357604576055760657607576085760957610576115761257613576145761557616576175761857619576205762157622576235762457625576265762757628576295763057631576325763357634576355763657637576385763957640576415764257643576445764557646576475764857649576505765157652576535765457655576565765757658576595766057661576625766357664576655766657667576685766957670576715767257673576745767557676576775767857679576805768157682576835768457685576865768757688576895769057691576925769357694576955769657697576985769957700577015770257703577045770557706577075770857709577105771157712577135771457715577165771757718577195772057721577225772357724577255772657727577285772957730577315773257733577345773557736577375773857739577405774157742577435774457745577465774757748577495775057751577525775357754577555775657757577585775957760577615776257763577645776557766577675776857769577705777157772577735777457775577765777757778577795778057781577825778357784577855778657787577885778957790577915779257793577945779557796577975779857799578005780157802578035780457805578065780757808578095781057811578125781357814578155781657817578185781957820578215782257823578245782557826578275782857829578305783157832578335783457835578365783757838578395784057841578425784357844578455784657847578485784957850578515785257853578545785557856578575785857859578605786157862578635786457865578665786757868578695787057871578725787357874578755787657877578785787957880578815788257883578845788557886578875788857889578905789157892578935789457895578965789757898578995790057901579025790357904579055790657907579085790957910579115791257913579145791557916579175791857919579205792157922579235792457925579265792757928579295793057931579325793357934579355793657937579385793957940579415794257943579445794557946579475794857949579505795157952579535795457955579565795757958579595796057961579625796357964579655796657967579685796957970579715797257973579745797557976579775797857979579805798157982579835798457985579865798757988579895799057991579925799357994579955799657997579985799958000580015800258003580045800558006580075800858009580105801158012580135801458015580165801758018580195802058021580225802358024580255802658027580285802958030580315803258033580345803558036580375803858039580405804158042580435804458045580465804758048580495805058051580525805358054580555805658057580585805958060580615806258063580645806558066580675806858069580705807158072580735807458075580765807758078580795808058081580825808358084580855808658087580885808958090580915809258093580945809558096580975809858099581005810158102581035810458105581065810758108581095811058111581125811358114581155811658117581185811958120581215812258123581245812558126581275812858129581305813158132581335813458135581365813758138581395814058141581425814358144581455814658147581485814958150581515815258153581545815558156581575815858159581605816158162581635816458165581665816758168581695817058171581725817358174581755817658177581785817958180581815818258183581845818558186581875818858189581905819158192581935819458195581965819758198581995820058201582025820358204582055820658207582085820958210582115821258213582145821558216582175821858219582205822158222582235822458225582265822758228582295823058231582325823358234582355823658237582385823958240582415824258243582445824558246582475824858249582505825158252582535825458255582565825758258582595826058261582625826358264582655826658267582685826958270582715827258273582745827558276582775827858279582805828158282582835828458285582865828758288582895829058291582925829358294582955829658297582985829958300583015830258303583045830558306583075830858309583105831158312583135831458315583165831758318583195832058321583225832358324583255832658327583285832958330583315833258333583345833558336583375833858339583405834158342583435834458345583465834758348583495835058351583525835358354583555835658357583585835958360583615836258363583645836558366583675836858369583705837158372583735837458375583765837758378583795838058381583825838358384583855838658387583885838958390583915839258393583945839558396583975839858399584005840158402584035840458405584065840758408584095841058411584125841358414584155841658417584185841958420584215842258423584245842558426584275842858429584305843158432584335843458435584365843758438584395844058441584425844358444584455844658447584485844958450584515845258453584545845558456584575845858459584605846158462584635846458465584665846758468584695847058471584725847358474584755847658477584785847958480584815848258483584845848558486584875848858489584905849158492584935849458495584965849758498584995850058501585025850358504585055850658507585085850958510585115851258513585145851558516585175851858519585205852158522585235852458525585265852758528585295853058531585325853358534585355853658537585385853958540585415854258543585445854558546585475854858549585505855158552585535855458555585565855758558585595856058561585625856358564585655856658567585685856958570585715857258573585745857558576585775857858579585805858158582585835858458585585865858758588585895859058591585925859358594585955859658597585985859958600586015860258603586045860558606586075860858609586105861158612586135861458615586165861758618586195862058621586225862358624586255862658627586285862958630586315863258633586345863558636586375863858639586405864158642586435864458645586465864758648586495865058651586525865358654586555865658657586585865958660586615866258663586645866558666586675866858669586705867158672586735867458675586765867758678586795868058681586825868358684586855868658687586885868958690586915869258693586945869558696586975869858699587005870158702587035870458705587065870758708587095871058711587125871358714587155871658717587185871958720587215872258723587245872558726587275872858729587305873158732587335873458735587365873758738587395874058741587425874358744587455874658747587485874958750587515875258753587545875558756587575875858759587605876158762587635876458765587665876758768587695877058771587725877358774587755877658777587785877958780587815878258783587845878558786587875878858789587905879158792587935879458795587965879758798587995880058801588025880358804588055880658807588085880958810588115881258813588145881558816588175881858819588205882158822588235882458825588265882758828588295883058831588325883358834588355883658837588385883958840588415884258843588445884558846588475884858849588505885158852588535885458855588565885758858588595886058861588625886358864588655886658867588685886958870588715887258873588745887558876588775887858879588805888158882588835888458885588865888758888588895889058891588925889358894588955889658897588985889958900589015890258903589045890558906589075890858909589105891158912589135891458915589165891758918589195892058921589225892358924589255892658927589285892958930589315893258933589345893558936589375893858939589405894158942589435894458945589465894758948589495895058951589525895358954589555895658957589585895958960589615896258963589645896558966589675896858969589705897158972589735897458975589765897758978589795898058981589825898358984589855898658987589885898958990589915899258993589945899558996589975899858999590005900159002590035900459005590065900759008590095901059011590125901359014590155901659017590185901959020590215902259023590245902559026590275902859029590305903159032590335903459035590365903759038590395904059041590425904359044590455904659047590485904959050590515905259053590545905559056590575905859059590605906159062590635906459065590665906759068590695907059071590725907359074590755907659077590785907959080590815908259083590845908559086590875908859089590905909159092590935909459095590965909759098590995910059101591025910359104591055910659107591085910959110591115911259113591145911559116591175911859119591205912159122591235912459125591265912759128591295913059131591325913359134591355913659137591385913959140591415914259143591445914559146591475914859149591505915159152591535915459155591565915759158591595916059161591625916359164591655916659167591685916959170591715917259173591745917559176591775917859179591805918159182591835918459185591865918759188591895919059191591925919359194591955919659197591985919959200592015920259203592045920559206592075920859209592105921159212592135921459215592165921759218592195922059221592225922359224592255922659227592285922959230592315923259233592345923559236592375923859239592405924159242592435924459245592465924759248592495925059251592525925359254592555925659257592585925959260592615926259263592645926559266592675926859269592705927159272592735927459275592765927759278592795928059281592825928359284592855928659287592885928959290592915929259293592945929559296592975929859299593005930159302593035930459305593065930759308593095931059311593125931359314593155931659317593185931959320593215932259323593245932559326593275932859329593305933159332593335933459335593365933759338593395934059341593425934359344593455934659347593485934959350593515935259353593545935559356593575935859359593605936159362593635936459365593665936759368593695937059371593725937359374593755937659377593785937959380593815938259383593845938559386593875938859389593905939159392593935939459395593965939759398593995940059401594025940359404594055940659407594085940959410594115941259413594145941559416594175941859419594205942159422594235942459425594265942759428594295943059431594325943359434594355943659437594385943959440594415944259443594445944559446594475944859449594505945159452594535945459455594565945759458594595946059461594625946359464594655946659467594685946959470594715947259473594745947559476594775947859479594805948159482594835948459485594865948759488594895949059491594925949359494594955949659497594985949959500595015950259503595045950559506595075950859509595105951159512595135951459515595165951759518595195952059521595225952359524595255952659527595285952959530595315953259533595345953559536595375953859539595405954159542595435954459545595465954759548595495955059551595525955359554595555955659557595585955959560595615956259563595645956559566595675956859569595705957159572595735957459575595765957759578595795958059581595825958359584595855958659587595885958959590595915959259593595945959559596595975959859599596005960159602596035960459605596065960759608596095961059611596125961359614596155961659617596185961959620596215962259623596245962559626596275962859629596305963159632596335963459635596365963759638596395964059641596425964359644596455964659647596485964959650596515965259653596545965559656596575965859659596605966159662596635966459665596665966759668596695967059671596725967359674596755967659677596785967959680596815968259683596845968559686596875968859689596905969159692596935969459695596965969759698596995970059701597025970359704597055970659707597085970959710597115971259713597145971559716597175971859719597205972159722597235972459725597265972759728597295973059731597325973359734597355973659737597385973959740597415974259743597445974559746597475974859749597505975159752597535975459755597565975759758597595976059761597625976359764597655976659767597685976959770597715977259773597745977559776597775977859779597805978159782597835978459785597865978759788597895979059791597925979359794597955979659797597985979959800598015980259803598045980559806598075980859809598105981159812598135981459815598165981759818598195982059821598225982359824598255982659827598285982959830598315983259833598345983559836598375983859839598405984159842598435984459845598465984759848598495985059851598525985359854598555985659857598585985959860598615986259863598645986559866598675986859869598705987159872598735987459875598765987759878598795988059881598825988359884598855988659887598885988959890598915989259893598945989559896598975989859899599005990159902599035990459905599065990759908599095991059911599125991359914599155991659917599185991959920599215992259923599245992559926599275992859929599305993159932599335993459935599365993759938599395994059941599425994359944599455994659947599485994959950599515995259953599545995559956599575995859959599605996159962599635996459965599665996759968599695997059971599725997359974599755997659977599785997959980599815998259983599845998559986599875998859989599905999159992599935999459995599965999759998599996000060001600026000360004600056000660007600086000960010600116001260013600146001560016600176001860019600206002160022600236002460025600266002760028600296003060031600326003360034600356003660037600386003960040600416004260043600446004560046600476004860049600506005160052600536005460055600566005760058600596006060061600626006360064600656006660067600686006960070600716007260073600746007560076600776007860079600806008160082600836008460085600866008760088600896009060091600926009360094600956009660097600986009960100601016010260103601046010560106601076010860109601106011160112601136011460115601166011760118601196012060121601226012360124601256012660127601286012960130601316013260133601346013560136601376013860139601406014160142601436014460145601466014760148601496015060151601526015360154601556015660157601586015960160601616016260163601646016560166601676016860169601706017160172601736017460175601766017760178601796018060181601826018360184601856018660187601886018960190601916019260193601946019560196601976019860199602006020160202602036020460205602066020760208602096021060211602126021360214602156021660217602186021960220602216022260223602246022560226602276022860229602306023160232602336023460235602366023760238602396024060241602426024360244602456024660247602486024960250602516025260253602546025560256602576025860259602606026160262602636026460265602666026760268602696027060271602726027360274602756027660277602786027960280602816028260283602846028560286602876028860289602906029160292602936029460295602966029760298602996030060301603026030360304603056030660307603086030960310603116031260313603146031560316603176031860319603206032160322603236032460325603266032760328603296033060331603326033360334603356033660337603386033960340603416034260343603446034560346603476034860349603506035160352603536035460355603566035760358603596036060361603626036360364603656036660367603686036960370603716037260373603746037560376603776037860379603806038160382603836038460385603866038760388603896039060391603926039360394603956039660397603986039960400604016040260403604046040560406604076040860409604106041160412604136041460415604166041760418604196042060421604226042360424604256042660427604286042960430604316043260433604346043560436604376043860439604406044160442604436044460445604466044760448604496045060451604526045360454604556045660457604586045960460604616046260463604646046560466604676046860469604706047160472604736047460475604766047760478604796048060481604826048360484604856048660487604886048960490604916049260493604946049560496604976049860499605006050160502605036050460505605066050760508605096051060511605126051360514605156051660517605186051960520605216052260523605246052560526605276052860529605306053160532605336053460535605366053760538605396054060541605426054360544605456054660547605486054960550605516055260553605546055560556605576055860559605606056160562605636056460565605666056760568605696057060571605726057360574605756057660577605786057960580605816058260583605846058560586605876058860589605906059160592605936059460595605966059760598605996060060601606026060360604606056060660607606086060960610606116061260613606146061560616606176061860619606206062160622606236062460625606266062760628606296063060631606326063360634606356063660637606386063960640606416064260643606446064560646606476064860649606506065160652606536065460655606566065760658606596066060661606626066360664606656066660667606686066960670606716067260673606746067560676606776067860679606806068160682606836068460685606866068760688606896069060691606926069360694606956069660697606986069960700607016070260703607046070560706607076070860709607106071160712607136071460715607166071760718607196072060721607226072360724607256072660727607286072960730607316073260733607346073560736607376073860739607406074160742607436074460745607466074760748607496075060751607526075360754607556075660757607586075960760607616076260763607646076560766607676076860769607706077160772607736077460775607766077760778607796078060781607826078360784607856078660787607886078960790607916079260793607946079560796607976079860799608006080160802608036080460805608066080760808608096081060811608126081360814608156081660817608186081960820608216082260823608246082560826608276082860829608306083160832608336083460835608366083760838608396084060841608426084360844608456084660847608486084960850608516085260853608546085560856608576085860859608606086160862608636086460865608666086760868608696087060871608726087360874608756087660877608786087960880608816088260883608846088560886608876088860889608906089160892608936089460895608966089760898608996090060901609026090360904609056090660907609086090960910609116091260913609146091560916609176091860919609206092160922609236092460925609266092760928609296093060931609326093360934609356093660937609386093960940609416094260943609446094560946609476094860949609506095160952609536095460955609566095760958609596096060961609626096360964609656096660967609686096960970609716097260973609746097560976609776097860979609806098160982609836098460985609866098760988609896099060991609926099360994609956099660997609986099961000610016100261003610046100561006610076100861009610106101161012610136101461015610166101761018610196102061021610226102361024610256102661027610286102961030610316103261033610346103561036610376103861039610406104161042610436104461045610466104761048610496105061051610526105361054610556105661057610586105961060610616106261063610646106561066610676106861069610706107161072610736107461075610766107761078610796108061081610826108361084610856108661087610886108961090610916109261093610946109561096610976109861099611006110161102611036110461105611066110761108611096111061111611126111361114611156111661117611186111961120611216112261123611246112561126611276112861129611306113161132611336113461135611366113761138611396114061141611426114361144611456114661147611486114961150611516115261153611546115561156611576115861159611606116161162611636116461165611666116761168611696117061171611726117361174611756117661177611786117961180611816118261183611846118561186611876118861189611906119161192611936119461195611966119761198611996120061201612026120361204612056120661207612086120961210612116121261213612146121561216612176121861219612206122161222612236122461225612266122761228612296123061231612326123361234612356123661237612386123961240612416124261243612446124561246612476124861249612506125161252612536125461255612566125761258612596126061261612626126361264612656126661267612686126961270612716127261273612746127561276612776127861279612806128161282612836128461285612866128761288612896129061291612926129361294612956129661297612986129961300613016130261303613046130561306613076130861309613106131161312613136131461315613166131761318613196132061321613226132361324613256132661327613286132961330613316133261333613346133561336613376133861339613406134161342613436134461345613466134761348613496135061351613526135361354613556135661357613586135961360613616136261363613646136561366613676136861369613706137161372613736137461375613766137761378613796138061381613826138361384613856138661387613886138961390613916139261393613946139561396613976139861399614006140161402614036140461405614066140761408614096141061411614126141361414614156141661417614186141961420614216142261423614246142561426614276142861429614306143161432614336143461435614366143761438614396144061441614426144361444614456144661447614486144961450614516145261453614546145561456614576145861459614606146161462614636146461465614666146761468614696147061471614726147361474614756147661477614786147961480614816148261483614846148561486614876148861489614906149161492614936149461495614966149761498614996150061501615026150361504615056150661507615086150961510615116151261513615146151561516615176151861519615206152161522615236152461525615266152761528615296153061531615326153361534615356153661537615386153961540615416154261543615446154561546615476154861549615506155161552615536155461555615566155761558615596156061561615626156361564615656156661567615686156961570615716157261573615746157561576615776157861579615806158161582615836158461585615866158761588615896159061591615926159361594615956159661597615986159961600616016160261603616046160561606616076160861609616106161161612616136161461615616166161761618616196162061621616226162361624616256162661627616286162961630616316163261633616346163561636616376163861639616406164161642616436164461645616466164761648616496165061651616526165361654616556165661657616586165961660616616166261663616646166561666616676166861669616706167161672616736167461675616766167761678616796168061681616826168361684616856168661687616886168961690616916169261693616946169561696616976169861699617006170161702617036170461705617066170761708617096171061711617126171361714617156171661717617186171961720617216172261723617246172561726617276172861729617306173161732617336173461735617366173761738617396174061741617426174361744617456174661747617486174961750617516175261753617546175561756617576175861759617606176161762617636176461765617666176761768617696177061771617726177361774617756177661777617786177961780617816178261783617846178561786617876178861789617906179161792617936179461795617966179761798617996180061801618026180361804618056180661807618086180961810618116181261813618146181561816618176181861819618206182161822618236182461825618266182761828618296183061831618326183361834618356183661837618386183961840618416184261843618446184561846618476184861849618506185161852618536185461855618566185761858618596186061861618626186361864618656186661867618686186961870618716187261873618746187561876618776187861879618806188161882618836188461885618866188761888618896189061891618926189361894618956189661897618986189961900619016190261903619046190561906619076190861909619106191161912619136191461915619166191761918619196192061921619226192361924619256192661927619286192961930619316193261933619346193561936619376193861939619406194161942619436194461945619466194761948619496195061951619526195361954619556195661957619586195961960619616196261963619646196561966619676196861969619706197161972619736197461975619766197761978619796198061981619826198361984619856198661987619886198961990619916199261993619946199561996619976199861999620006200162002620036200462005620066200762008620096201062011620126201362014620156201662017620186201962020620216202262023620246202562026620276202862029620306203162032620336203462035620366203762038620396204062041620426204362044620456204662047620486204962050620516205262053620546205562056620576205862059620606206162062620636206462065620666206762068620696207062071620726207362074620756207662077620786207962080620816208262083620846208562086620876208862089620906209162092620936209462095620966209762098620996210062101621026210362104621056210662107621086210962110621116211262113621146211562116621176211862119621206212162122621236212462125621266212762128621296213062131621326213362134621356213662137621386213962140621416214262143621446214562146621476214862149621506215162152621536215462155621566215762158621596216062161621626216362164621656216662167621686216962170621716217262173621746217562176621776217862179621806218162182621836218462185621866218762188621896219062191621926219362194621956219662197621986219962200622016220262203622046220562206622076220862209622106221162212622136221462215622166221762218622196222062221622226222362224622256222662227622286222962230622316223262233622346223562236622376223862239622406224162242622436224462245622466224762248622496225062251622526225362254622556225662257622586225962260622616226262263622646226562266622676226862269622706227162272622736227462275622766227762278622796228062281622826228362284622856228662287622886228962290622916229262293622946229562296622976229862299623006230162302623036230462305623066230762308623096231062311623126231362314623156231662317623186231962320623216232262323623246232562326623276232862329623306233162332623336233462335623366233762338623396234062341623426234362344623456234662347623486234962350623516235262353623546235562356623576235862359623606236162362623636236462365623666236762368623696237062371623726237362374623756237662377623786237962380623816238262383623846238562386623876238862389623906239162392623936239462395623966239762398623996240062401624026240362404624056240662407624086240962410624116241262413624146241562416624176241862419624206242162422624236242462425624266242762428624296243062431624326243362434624356243662437624386243962440624416244262443624446244562446624476244862449624506245162452624536245462455624566245762458624596246062461624626246362464624656246662467624686246962470624716247262473624746247562476624776247862479624806248162482624836248462485624866248762488624896249062491624926249362494624956249662497624986249962500625016250262503625046250562506625076250862509625106251162512625136251462515625166251762518625196252062521625226252362524625256252662527625286252962530625316253262533625346253562536625376253862539625406254162542625436254462545625466254762548625496255062551625526255362554625556255662557625586255962560625616256262563625646256562566625676256862569625706257162572625736257462575625766257762578625796258062581625826258362584625856258662587625886258962590625916259262593625946259562596625976259862599626006260162602626036260462605626066260762608626096261062611626126261362614626156261662617626186261962620626216262262623626246262562626626276262862629626306263162632626336263462635626366263762638626396264062641626426264362644626456264662647626486264962650626516265262653626546265562656626576265862659626606266162662626636266462665626666266762668626696267062671626726267362674626756267662677626786267962680626816268262683626846268562686626876268862689626906269162692626936269462695626966269762698626996270062701627026270362704627056270662707627086270962710627116271262713627146271562716627176271862719627206272162722627236272462725627266272762728627296273062731627326273362734627356273662737627386273962740627416274262743627446274562746627476274862749627506275162752627536275462755627566275762758627596276062761627626276362764627656276662767627686276962770627716277262773627746277562776627776277862779627806278162782627836278462785627866278762788627896279062791627926279362794627956279662797627986279962800628016280262803628046280562806628076280862809628106281162812628136281462815628166281762818628196282062821628226282362824628256282662827628286282962830628316283262833628346283562836628376283862839628406284162842628436284462845628466284762848628496285062851628526285362854628556285662857628586285962860628616286262863628646286562866628676286862869628706287162872628736287462875628766287762878628796288062881628826288362884628856288662887628886288962890628916289262893628946289562896628976289862899629006290162902629036290462905629066290762908629096291062911629126291362914629156291662917629186291962920629216292262923629246292562926629276292862929629306293162932629336293462935629366293762938629396294062941629426294362944629456294662947629486294962950629516295262953629546295562956629576295862959629606296162962629636296462965629666296762968629696297062971629726297362974629756297662977629786297962980629816298262983629846298562986629876298862989629906299162992629936299462995629966299762998629996300063001630026300363004630056300663007630086300963010630116301263013630146301563016630176301863019630206302163022630236302463025630266302763028630296303063031630326303363034630356303663037630386303963040630416304263043630446304563046630476304863049630506305163052630536305463055630566305763058630596306063061630626306363064630656306663067630686306963070630716307263073630746307563076630776307863079630806308163082630836308463085630866308763088630896309063091630926309363094630956309663097630986309963100631016310263103631046310563106631076310863109631106311163112631136311463115631166311763118631196312063121631226312363124631256312663127631286312963130631316313263133631346313563136631376313863139631406314163142631436314463145631466314763148631496315063151631526315363154631556315663157631586315963160631616316263163631646316563166631676316863169631706317163172631736317463175631766317763178631796318063181631826318363184631856318663187631886318963190631916319263193631946319563196631976319863199632006320163202632036320463205632066320763208632096321063211632126321363214632156321663217632186321963220632216322263223632246322563226632276322863229632306323163232632336323463235632366323763238632396324063241632426324363244632456324663247632486324963250632516325263253632546325563256632576325863259632606326163262632636326463265632666326763268632696327063271632726327363274632756327663277632786327963280632816328263283632846328563286632876328863289632906329163292632936329463295632966329763298632996330063301633026330363304633056330663307633086330963310633116331263313633146331563316633176331863319633206332163322633236332463325633266332763328633296333063331633326333363334633356333663337633386333963340633416334263343633446334563346633476334863349633506335163352633536335463355633566335763358633596336063361633626336363364633656336663367633686336963370633716337263373633746337563376633776337863379633806338163382633836338463385633866338763388633896339063391633926339363394633956339663397633986339963400634016340263403634046340563406634076340863409634106341163412634136341463415634166341763418634196342063421634226342363424634256342663427634286342963430634316343263433634346343563436634376343863439634406344163442634436344463445634466344763448634496345063451634526345363454634556345663457634586345963460634616346263463634646346563466634676346863469634706347163472634736347463475634766347763478634796348063481634826348363484634856348663487634886348963490634916349263493634946349563496634976349863499635006350163502635036350463505635066350763508635096351063511635126351363514635156351663517635186351963520635216352263523635246352563526635276352863529635306353163532635336353463535635366353763538635396354063541635426354363544635456354663547635486354963550635516355263553635546355563556635576355863559635606356163562635636356463565635666356763568635696357063571635726357363574635756357663577635786357963580635816358263583635846358563586635876358863589635906359163592635936359463595635966359763598635996360063601636026360363604636056360663607636086360963610636116361263613636146361563616636176361863619636206362163622636236362463625636266362763628636296363063631636326363363634636356363663637636386363963640636416364263643636446364563646636476364863649636506365163652636536365463655636566365763658636596366063661636626366363664636656366663667636686366963670636716367263673636746367563676636776367863679636806368163682636836368463685636866368763688636896369063691636926369363694636956369663697636986369963700637016370263703637046370563706637076370863709637106371163712637136371463715637166371763718637196372063721637226372363724637256372663727637286372963730637316373263733637346373563736637376373863739637406374163742637436374463745637466374763748637496375063751637526375363754637556375663757637586375963760637616376263763637646376563766637676376863769637706377163772637736377463775637766377763778637796378063781637826378363784637856378663787637886378963790637916379263793637946379563796637976379863799638006380163802638036380463805638066380763808638096381063811638126381363814638156381663817638186381963820638216382263823638246382563826638276382863829638306383163832638336383463835638366383763838638396384063841638426384363844638456384663847638486384963850638516385263853638546385563856638576385863859638606386163862638636386463865638666386763868638696387063871638726387363874638756387663877638786387963880638816388263883638846388563886638876388863889638906389163892638936389463895638966389763898638996390063901639026390363904639056390663907639086390963910639116391263913639146391563916639176391863919639206392163922639236392463925639266392763928639296393063931639326393363934639356393663937639386393963940639416394263943639446394563946639476394863949639506395163952639536395463955639566395763958639596396063961639626396363964639656396663967639686396963970639716397263973639746397563976639776397863979639806398163982639836398463985639866398763988639896399063991639926399363994639956399663997639986399964000640016400264003640046400564006640076400864009640106401164012640136401464015640166401764018640196402064021640226402364024640256402664027640286402964030640316403264033640346403564036640376403864039640406404164042640436404464045640466404764048640496405064051640526405364054640556405664057640586405964060640616406264063640646406564066640676406864069640706407164072640736407464075640766407764078640796408064081640826408364084640856408664087640886408964090640916409264093640946409564096640976409864099641006410164102641036410464105641066410764108641096411064111641126411364114641156411664117641186411964120641216412264123641246412564126641276412864129641306413164132641336413464135641366413764138641396414064141641426414364144641456414664147641486414964150641516415264153641546415564156641576415864159641606416164162641636416464165641666416764168641696417064171641726417364174641756417664177641786417964180641816418264183641846418564186641876418864189641906419164192641936419464195641966419764198641996420064201642026420364204642056420664207642086420964210642116421264213642146421564216642176421864219642206422164222642236422464225642266422764228642296423064231642326423364234642356423664237642386423964240642416424264243642446424564246642476424864249642506425164252642536425464255642566425764258642596426064261642626426364264642656426664267642686426964270642716427264273642746427564276642776427864279642806428164282642836428464285642866428764288642896429064291642926429364294642956429664297642986429964300643016430264303643046430564306643076430864309643106431164312643136431464315643166431764318643196432064321643226432364324643256432664327643286432964330643316433264333643346433564336643376433864339643406434164342643436434464345643466434764348643496435064351643526435364354643556435664357643586435964360643616436264363643646436564366643676436864369643706437164372643736437464375643766437764378643796438064381643826438364384643856438664387643886438964390643916439264393643946439564396643976439864399644006440164402644036440464405644066440764408644096441064411644126441364414644156441664417644186441964420644216442264423644246442564426644276442864429644306443164432644336443464435644366443764438644396444064441644426444364444644456444664447644486444964450644516445264453644546445564456644576445864459644606446164462644636446464465644666446764468644696447064471644726447364474644756447664477644786447964480644816448264483644846448564486644876448864489644906449164492644936449464495644966449764498644996450064501645026450364504645056450664507645086450964510645116451264513645146451564516645176451864519645206452164522645236452464525645266452764528645296453064531645326453364534645356453664537645386453964540645416454264543645446454564546645476454864549645506455164552645536455464555645566455764558645596456064561645626456364564645656456664567645686456964570645716457264573645746457564576645776457864579645806458164582645836458464585645866458764588645896459064591645926459364594645956459664597645986459964600646016460264603646046460564606646076460864609646106461164612646136461464615646166461764618646196462064621646226462364624646256462664627646286462964630646316463264633646346463564636646376463864639646406464164642646436464464645646466464764648646496465064651646526465364654646556465664657646586465964660646616466264663646646466564666646676466864669646706467164672646736467464675646766467764678646796468064681646826468364684646856468664687646886468964690646916469264693646946469564696646976469864699647006470164702647036470464705647066470764708647096471064711647126471364714647156471664717647186471964720647216472264723647246472564726647276472864729647306473164732647336473464735647366473764738647396474064741647426474364744647456474664747647486474964750647516475264753647546475564756647576475864759647606476164762647636476464765647666476764768647696477064771647726477364774647756477664777647786477964780647816478264783647846478564786647876478864789647906479164792647936479464795647966479764798647996480064801648026480364804648056480664807648086480964810648116481264813648146481564816648176481864819648206482164822648236482464825648266482764828648296483064831648326483364834648356483664837648386483964840648416484264843648446484564846648476484864849648506485164852648536485464855648566485764858648596486064861648626486364864648656486664867648686486964870648716487264873648746487564876648776487864879648806488164882648836488464885648866488764888648896489064891648926489364894648956489664897648986489964900649016490264903649046490564906649076490864909649106491164912649136491464915649166491764918649196492064921649226492364924649256492664927649286492964930649316493264933649346493564936649376493864939649406494164942649436494464945649466494764948649496495064951649526495364954649556495664957649586495964960649616496264963649646496564966649676496864969649706497164972649736497464975649766497764978649796498064981649826498364984649856498664987649886498964990649916499264993649946499564996649976499864999650006500165002650036500465005650066500765008650096501065011650126501365014650156501665017650186501965020650216502265023650246502565026650276502865029650306503165032650336503465035650366503765038650396504065041650426504365044650456504665047650486504965050650516505265053650546505565056650576505865059650606506165062650636506465065650666506765068650696507065071650726507365074650756507665077650786507965080650816508265083650846508565086650876508865089650906509165092650936509465095650966509765098650996510065101651026510365104651056510665107651086510965110651116511265113651146511565116651176511865119651206512165122651236512465125651266512765128651296513065131651326513365134651356513665137651386513965140651416514265143651446514565146651476514865149651506515165152651536515465155651566515765158651596516065161651626516365164651656516665167651686516965170651716517265173651746517565176651776517865179651806518165182651836518465185651866518765188651896519065191651926519365194651956519665197651986519965200652016520265203652046520565206652076520865209652106521165212652136521465215652166521765218652196522065221652226522365224652256522665227652286522965230652316523265233652346523565236652376523865239652406524165242652436524465245652466524765248652496525065251652526525365254652556525665257652586525965260652616526265263652646526565266652676526865269652706527165272652736527465275652766527765278652796528065281652826528365284652856528665287652886528965290652916529265293652946529565296652976529865299653006530165302653036530465305653066530765308653096531065311653126531365314653156531665317653186531965320653216532265323653246532565326653276532865329653306533165332653336533465335653366533765338653396534065341653426534365344653456534665347653486534965350653516535265353653546535565356653576535865359653606536165362653636536465365653666536765368653696537065371653726537365374653756537665377653786537965380653816538265383653846538565386653876538865389653906539165392653936539465395653966539765398653996540065401654026540365404654056540665407654086540965410654116541265413654146541565416654176541865419654206542165422654236542465425654266542765428654296543065431654326543365434654356543665437654386543965440654416544265443654446544565446654476544865449654506545165452654536545465455654566545765458654596546065461654626546365464654656546665467654686546965470654716547265473654746547565476654776547865479654806548165482654836548465485654866548765488654896549065491654926549365494654956549665497654986549965500655016550265503655046550565506655076550865509655106551165512655136551465515655166551765518655196552065521655226552365524655256552665527655286552965530655316553265533655346553565536655376553865539655406554165542655436554465545655466554765548655496555065551655526555365554655556555665557655586555965560655616556265563655646556565566655676556865569655706557165572655736557465575655766557765578655796558065581655826558365584655856558665587655886558965590655916559265593655946559565596655976559865599656006560165602656036560465605656066560765608656096561065611656126561365614656156561665617656186561965620656216562265623656246562565626656276562865629656306563165632656336563465635656366563765638656396564065641656426564365644656456564665647656486564965650656516565265653656546565565656656576565865659656606566165662656636566465665656666566765668656696567065671656726567365674656756567665677656786567965680656816568265683656846568565686656876568865689656906569165692656936569465695656966569765698656996570065701657026570365704657056570665707657086570965710657116571265713657146571565716657176571865719657206572165722657236572465725657266572765728657296573065731657326573365734657356573665737657386573965740657416574265743657446574565746657476574865749657506575165752657536575465755657566575765758657596576065761657626576365764657656576665767657686576965770657716577265773657746577565776657776577865779657806578165782657836578465785657866578765788657896579065791657926579365794657956579665797657986579965800658016580265803658046580565806658076580865809658106581165812658136581465815658166581765818658196582065821658226582365824658256582665827658286582965830658316583265833658346583565836658376583865839658406584165842658436584465845658466584765848658496585065851658526585365854658556585665857658586585965860658616586265863658646586565866658676586865869658706587165872658736587465875658766587765878658796588065881658826588365884658856588665887658886588965890658916589265893658946589565896658976589865899659006590165902659036590465905659066590765908659096591065911659126591365914659156591665917659186591965920659216592265923659246592565926659276592865929659306593165932659336593465935659366593765938659396594065941659426594365944659456594665947659486594965950659516595265953659546595565956659576595865959659606596165962659636596465965659666596765968659696597065971659726597365974659756597665977659786597965980659816598265983659846598565986659876598865989659906599165992659936599465995659966599765998659996600066001660026600366004660056600666007660086600966010660116601266013660146601566016660176601866019660206602166022660236602466025660266602766028660296603066031660326603366034660356603666037660386603966040660416604266043660446604566046660476604866049660506605166052660536605466055660566605766058660596606066061660626606366064660656606666067660686606966070660716607266073660746607566076660776607866079660806608166082660836608466085660866608766088660896609066091660926609366094660956609666097660986609966100661016610266103661046610566106661076610866109661106611166112661136611466115661166611766118661196612066121661226612366124661256612666127661286612966130661316613266133661346613566136661376613866139661406614166142661436614466145661466614766148661496615066151661526615366154661556615666157661586615966160661616616266163661646616566166661676616866169661706617166172661736617466175661766617766178661796618066181661826618366184661856618666187661886618966190661916619266193661946619566196661976619866199662006620166202662036620466205662066620766208662096621066211662126621366214662156621666217662186621966220662216622266223662246622566226662276622866229662306623166232662336623466235662366623766238662396624066241662426624366244662456624666247662486624966250662516625266253662546625566256662576625866259662606626166262662636626466265662666626766268662696627066271662726627366274662756627666277662786627966280662816628266283662846628566286662876628866289662906629166292662936629466295662966629766298662996630066301663026630366304663056630666307663086630966310663116631266313663146631566316663176631866319663206632166322663236632466325663266632766328663296633066331663326633366334663356633666337663386633966340663416634266343663446634566346663476634866349663506635166352663536635466355663566635766358663596636066361663626636366364663656636666367663686636966370663716637266373663746637566376663776637866379663806638166382663836638466385663866638766388663896639066391663926639366394663956639666397663986639966400664016640266403664046640566406664076640866409664106641166412664136641466415664166641766418664196642066421664226642366424664256642666427664286642966430664316643266433664346643566436664376643866439664406644166442664436644466445664466644766448664496645066451664526645366454664556645666457664586645966460664616646266463664646646566466664676646866469664706647166472664736647466475664766647766478664796648066481664826648366484664856648666487664886648966490664916649266493664946649566496664976649866499665006650166502665036650466505665066650766508665096651066511665126651366514665156651666517665186651966520665216652266523665246652566526665276652866529665306653166532665336653466535665366653766538665396654066541665426654366544665456654666547665486654966550665516655266553665546655566556665576655866559665606656166562665636656466565665666656766568665696657066571665726657366574665756657666577665786657966580665816658266583665846658566586665876658866589665906659166592665936659466595665966659766598665996660066601666026660366604666056660666607666086660966610666116661266613666146661566616666176661866619666206662166622666236662466625666266662766628666296663066631666326663366634666356663666637666386663966640666416664266643666446664566646666476664866649666506665166652666536665466655666566665766658666596666066661666626666366664666656666666667666686666966670666716667266673666746667566676666776667866679666806668166682666836668466685666866668766688666896669066691666926669366694666956669666697666986669966700667016670266703667046670566706667076670866709667106671166712667136671466715667166671766718667196672066721667226672366724667256672666727667286672966730667316673266733667346673566736667376673866739667406674166742667436674466745667466674766748667496675066751667526675366754667556675666757667586675966760667616676266763667646676566766667676676866769667706677166772667736677466775667766677766778667796678066781667826678366784667856678666787667886678966790667916679266793667946679566796667976679866799668006680166802668036680466805668066680766808668096681066811668126681366814668156681666817668186681966820668216682266823668246682566826668276682866829668306683166832668336683466835668366683766838668396684066841668426684366844668456684666847668486684966850668516685266853668546685566856668576685866859668606686166862668636686466865668666686766868668696687066871668726687366874668756687666877668786687966880668816688266883668846688566886668876688866889668906689166892668936689466895668966689766898668996690066901669026690366904669056690666907669086690966910669116691266913669146691566916669176691866919669206692166922669236692466925669266692766928669296693066931669326693366934669356693666937669386693966940669416694266943669446694566946669476694866949669506695166952669536695466955669566695766958669596696066961669626696366964669656696666967669686696966970669716697266973669746697566976669776697866979669806698166982669836698466985669866698766988669896699066991669926699366994669956699666997669986699967000670016700267003670046700567006670076700867009670106701167012670136701467015670166701767018670196702067021670226702367024670256702667027670286702967030670316703267033670346703567036670376703867039670406704167042670436704467045670466704767048670496705067051670526705367054670556705667057670586705967060670616706267063670646706567066670676706867069670706707167072670736707467075670766707767078670796708067081670826708367084670856708667087670886708967090670916709267093670946709567096670976709867099671006710167102671036710467105671066710767108671096711067111671126711367114671156711667117671186711967120671216712267123671246712567126671276712867129671306713167132671336713467135671366713767138671396714067141671426714367144671456714667147671486714967150671516715267153671546715567156671576715867159671606716167162671636716467165671666716767168671696717067171671726717367174671756717667177671786717967180671816718267183671846718567186671876718867189671906719167192671936719467195671966719767198671996720067201672026720367204672056720667207672086720967210672116721267213672146721567216672176721867219672206722167222672236722467225672266722767228672296723067231672326723367234672356723667237672386723967240672416724267243672446724567246672476724867249672506725167252672536725467255672566725767258672596726067261672626726367264672656726667267672686726967270672716727267273672746727567276672776727867279672806728167282672836728467285672866728767288672896729067291672926729367294672956729667297672986729967300673016730267303673046730567306673076730867309673106731167312673136731467315673166731767318673196732067321673226732367324673256732667327673286732967330673316733267333673346733567336673376733867339673406734167342673436734467345673466734767348673496735067351673526735367354673556735667357673586735967360673616736267363673646736567366673676736867369673706737167372673736737467375673766737767378673796738067381673826738367384673856738667387673886738967390673916739267393673946739567396673976739867399674006740167402674036740467405674066740767408674096741067411674126741367414674156741667417674186741967420674216742267423674246742567426674276742867429674306743167432674336743467435674366743767438674396744067441674426744367444674456744667447674486744967450674516745267453674546745567456674576745867459674606746167462674636746467465674666746767468674696747067471674726747367474674756747667477674786747967480674816748267483674846748567486674876748867489674906749167492674936749467495674966749767498674996750067501675026750367504675056750667507675086750967510675116751267513675146751567516675176751867519675206752167522675236752467525675266752767528675296753067531675326753367534675356753667537675386753967540675416754267543675446754567546675476754867549675506755167552675536755467555675566755767558675596756067561675626756367564675656756667567675686756967570675716757267573675746757567576675776757867579675806758167582675836758467585675866758767588675896759067591675926759367594675956759667597675986759967600676016760267603676046760567606676076760867609676106761167612676136761467615676166761767618676196762067621676226762367624676256762667627676286762967630676316763267633676346763567636676376763867639676406764167642676436764467645676466764767648676496765067651676526765367654676556765667657676586765967660676616766267663676646766567666676676766867669676706767167672676736767467675676766767767678676796768067681676826768367684676856768667687676886768967690676916769267693676946769567696676976769867699677006770167702677036770467705677066770767708677096771067711677126771367714677156771667717677186771967720677216772267723677246772567726677276772867729677306773167732677336773467735677366773767738677396774067741677426774367744677456774667747677486774967750677516775267753677546775567756677576775867759677606776167762677636776467765677666776767768677696777067771677726777367774677756777667777677786777967780677816778267783677846778567786677876778867789677906779167792677936779467795677966779767798677996780067801678026780367804678056780667807678086780967810678116781267813678146781567816678176781867819678206782167822678236782467825678266782767828678296783067831678326783367834678356783667837678386783967840678416784267843678446784567846678476784867849678506785167852678536785467855678566785767858678596786067861678626786367864678656786667867678686786967870678716787267873678746787567876678776787867879678806788167882678836788467885678866788767888678896789067891678926789367894678956789667897678986789967900679016790267903679046790567906679076790867909679106791167912679136791467915679166791767918679196792067921679226792367924679256792667927679286792967930679316793267933679346793567936679376793867939679406794167942679436794467945679466794767948679496795067951679526795367954679556795667957679586795967960679616796267963679646796567966679676796867969679706797167972679736797467975679766797767978679796798067981679826798367984679856798667987679886798967990679916799267993679946799567996679976799867999680006800168002680036800468005680066800768008680096801068011680126801368014680156801668017680186801968020680216802268023680246802568026680276802868029680306803168032680336803468035680366803768038680396804068041680426804368044680456804668047680486804968050680516805268053680546805568056680576805868059680606806168062680636806468065680666806768068680696807068071680726807368074680756807668077680786807968080680816808268083680846808568086680876808868089680906809168092680936809468095680966809768098680996810068101681026810368104681056810668107681086810968110681116811268113681146811568116681176811868119681206812168122681236812468125681266812768128681296813068131681326813368134681356813668137681386813968140681416814268143681446814568146681476814868149681506815168152681536815468155681566815768158681596816068161681626816368164681656816668167681686816968170681716817268173681746817568176681776817868179681806818168182681836818468185681866818768188681896819068191681926819368194681956819668197681986819968200682016820268203682046820568206682076820868209682106821168212682136821468215682166821768218682196822068221682226822368224682256822668227682286822968230682316823268233682346823568236682376823868239682406824168242682436824468245682466824768248682496825068251682526825368254682556825668257682586825968260682616826268263682646826568266682676826868269682706827168272682736827468275682766827768278682796828068281682826828368284682856828668287682886828968290682916829268293682946829568296682976829868299683006830168302683036830468305683066830768308683096831068311683126831368314683156831668317683186831968320683216832268323683246832568326683276832868329683306833168332683336833468335683366833768338683396834068341683426834368344683456834668347683486834968350683516835268353683546835568356683576835868359683606836168362683636836468365683666836768368683696837068371683726837368374683756837668377683786837968380683816838268383683846838568386683876838868389683906839168392683936839468395683966839768398683996840068401684026840368404684056840668407684086840968410684116841268413684146841568416684176841868419684206842168422684236842468425684266842768428684296843068431684326843368434684356843668437684386843968440684416844268443684446844568446684476844868449684506845168452684536845468455684566845768458684596846068461684626846368464684656846668467684686846968470684716847268473684746847568476684776847868479684806848168482684836848468485684866848768488684896849068491684926849368494684956849668497684986849968500685016850268503685046850568506685076850868509685106851168512685136851468515685166851768518685196852068521685226852368524685256852668527685286852968530685316853268533685346853568536685376853868539685406854168542685436854468545685466854768548685496855068551685526855368554685556855668557685586855968560685616856268563685646856568566685676856868569685706857168572685736857468575685766857768578685796858068581685826858368584685856858668587685886858968590685916859268593685946859568596685976859868599686006860168602686036860468605686066860768608686096861068611686126861368614686156861668617686186861968620686216862268623686246862568626686276862868629686306863168632686336863468635686366863768638686396864068641686426864368644686456864668647686486864968650686516865268653686546865568656686576865868659686606866168662686636866468665686666866768668686696867068671686726867368674686756867668677686786867968680686816868268683686846868568686686876868868689686906869168692686936869468695686966869768698686996870068701687026870368704687056870668707687086870968710687116871268713687146871568716687176871868719687206872168722687236872468725687266872768728687296873068731687326873368734687356873668737687386873968740687416874268743687446874568746687476874868749687506875168752687536875468755687566875768758687596876068761687626876368764687656876668767687686876968770687716877268773687746877568776687776877868779687806878168782687836878468785687866878768788687896879068791687926879368794687956879668797687986879968800688016880268803688046880568806688076880868809688106881168812688136881468815688166881768818688196882068821688226882368824688256882668827688286882968830688316883268833688346883568836688376883868839688406884168842688436884468845688466884768848688496885068851688526885368854688556885668857688586885968860688616886268863688646886568866688676886868869688706887168872688736887468875688766887768878688796888068881688826888368884688856888668887688886888968890688916889268893688946889568896688976889868899689006890168902689036890468905689066890768908689096891068911689126891368914689156891668917689186891968920689216892268923689246892568926689276892868929689306893168932689336893468935689366893768938689396894068941689426894368944689456894668947689486894968950689516895268953689546895568956689576895868959689606896168962689636896468965689666896768968689696897068971689726897368974689756897668977689786897968980689816898268983689846898568986689876898868989689906899168992689936899468995689966899768998689996900069001690026900369004690056900669007690086900969010690116901269013690146901569016690176901869019690206902169022690236902469025690266902769028690296903069031690326903369034690356903669037690386903969040690416904269043690446904569046690476904869049690506905169052690536905469055690566905769058690596906069061690626906369064690656906669067690686906969070690716907269073690746907569076690776907869079690806908169082690836908469085690866908769088690896909069091690926909369094690956909669097690986909969100691016910269103691046910569106691076910869109691106911169112691136911469115691166911769118691196912069121691226912369124691256912669127691286912969130691316913269133691346913569136691376913869139691406914169142691436914469145691466914769148691496915069151691526915369154691556915669157691586915969160691616916269163691646916569166691676916869169691706917169172691736917469175691766917769178691796918069181691826918369184691856918669187691886918969190691916919269193691946919569196691976919869199692006920169202692036920469205692066920769208692096921069211692126921369214692156921669217692186921969220692216922269223692246922569226692276922869229692306923169232692336923469235692366923769238692396924069241692426924369244692456924669247692486924969250692516925269253692546925569256692576925869259692606926169262692636926469265692666926769268692696927069271692726927369274692756927669277692786927969280692816928269283692846928569286692876928869289692906929169292692936929469295692966929769298692996930069301693026930369304693056930669307693086930969310693116931269313693146931569316693176931869319693206932169322693236932469325693266932769328693296933069331693326933369334693356933669337693386933969340693416934269343693446934569346693476934869349693506935169352693536935469355693566935769358693596936069361693626936369364693656936669367693686936969370693716937269373693746937569376693776937869379693806938169382693836938469385693866938769388693896939069391693926939369394693956939669397693986939969400694016940269403694046940569406694076940869409694106941169412694136941469415694166941769418694196942069421694226942369424694256942669427694286942969430694316943269433694346943569436694376943869439694406944169442694436944469445694466944769448694496945069451694526945369454694556945669457694586945969460694616946269463694646946569466694676946869469694706947169472694736947469475694766947769478694796948069481694826948369484694856948669487694886948969490694916949269493694946949569496694976949869499695006950169502695036950469505695066950769508695096951069511695126951369514695156951669517695186951969520695216952269523695246952569526695276952869529695306953169532695336953469535695366953769538695396954069541695426954369544695456954669547695486954969550695516955269553695546955569556695576955869559695606956169562695636956469565695666956769568695696957069571695726957369574695756957669577695786957969580695816958269583695846958569586695876958869589695906959169592695936959469595695966959769598695996960069601696026960369604696056960669607696086960969610696116961269613696146961569616696176961869619696206962169622696236962469625696266962769628696296963069631696326963369634696356963669637696386963969640696416964269643696446964569646696476964869649696506965169652696536965469655696566965769658696596966069661696626966369664696656966669667696686966969670696716967269673696746967569676696776967869679696806968169682696836968469685696866968769688696896969069691696926969369694696956969669697696986969969700697016970269703697046970569706697076970869709697106971169712697136971469715697166971769718697196972069721697226972369724697256972669727697286972969730697316973269733697346973569736697376973869739697406974169742697436974469745697466974769748697496975069751697526975369754697556975669757697586975969760697616976269763697646976569766697676976869769697706977169772697736977469775697766977769778697796978069781697826978369784697856978669787697886978969790697916979269793697946979569796697976979869799698006980169802698036980469805698066980769808698096981069811698126981369814698156981669817698186981969820698216982269823698246982569826698276982869829698306983169832698336983469835698366983769838698396984069841698426984369844698456984669847698486984969850698516985269853698546985569856698576985869859698606986169862698636986469865698666986769868698696987069871698726987369874698756987669877698786987969880698816988269883698846988569886698876988869889698906989169892698936989469895698966989769898698996990069901699026990369904699056990669907699086990969910699116991269913699146991569916699176991869919699206992169922699236992469925699266992769928699296993069931699326993369934699356993669937699386993969940699416994269943699446994569946699476994869949699506995169952699536995469955699566995769958699596996069961699626996369964699656996669967699686996969970699716997269973699746997569976699776997869979699806998169982699836998469985699866998769988699896999069991699926999369994699956999669997699986999970000700017000270003700047000570006700077000870009700107001170012700137001470015700167001770018700197002070021700227002370024700257002670027700287002970030700317003270033700347003570036700377003870039700407004170042700437004470045700467004770048700497005070051700527005370054700557005670057700587005970060700617006270063700647006570066700677006870069700707007170072700737007470075700767007770078700797008070081700827008370084700857008670087700887008970090700917009270093700947009570096700977009870099701007010170102701037010470105701067010770108701097011070111701127011370114701157011670117701187011970120701217012270123701247012570126701277012870129701307013170132701337013470135701367013770138701397014070141701427014370144701457014670147701487014970150701517015270153701547015570156701577015870159701607016170162701637016470165701667016770168701697017070171701727017370174701757017670177701787017970180701817018270183701847018570186701877018870189701907019170192701937019470195701967019770198701997020070201702027020370204702057020670207702087020970210702117021270213702147021570216702177021870219702207022170222702237022470225702267022770228702297023070231702327023370234702357023670237702387023970240702417024270243702447024570246702477024870249702507025170252702537025470255702567025770258702597026070261702627026370264702657026670267702687026970270702717027270273702747027570276702777027870279702807028170282702837028470285702867028770288702897029070291702927029370294702957029670297702987029970300703017030270303703047030570306703077030870309703107031170312703137031470315703167031770318703197032070321703227032370324703257032670327703287032970330703317033270333703347033570336703377033870339703407034170342703437034470345703467034770348703497035070351703527035370354703557035670357703587035970360703617036270363703647036570366703677036870369703707037170372703737037470375703767037770378703797038070381703827038370384703857038670387703887038970390703917039270393703947039570396703977039870399704007040170402704037040470405704067040770408704097041070411704127041370414704157041670417704187041970420704217042270423704247042570426704277042870429704307043170432704337043470435704367043770438704397044070441704427044370444704457044670447704487044970450704517045270453704547045570456704577045870459704607046170462704637046470465704667046770468704697047070471704727047370474704757047670477704787047970480704817048270483704847048570486704877048870489704907049170492704937049470495704967049770498704997050070501705027050370504705057050670507705087050970510705117051270513705147051570516705177051870519705207052170522705237052470525705267052770528705297053070531705327053370534705357053670537705387053970540705417054270543705447054570546705477054870549705507055170552705537055470555705567055770558705597056070561705627056370564705657056670567705687056970570705717057270573705747057570576705777057870579705807058170582705837058470585705867058770588705897059070591705927059370594705957059670597705987059970600706017060270603706047060570606706077060870609706107061170612706137061470615706167061770618706197062070621706227062370624706257062670627706287062970630706317063270633706347063570636706377063870639706407064170642706437064470645706467064770648706497065070651706527065370654706557065670657706587065970660706617066270663706647066570666706677066870669706707067170672706737067470675706767067770678706797068070681706827068370684706857068670687706887068970690706917069270693706947069570696706977069870699707007070170702707037070470705707067070770708707097071070711707127071370714707157071670717707187071970720707217072270723707247072570726707277072870729707307073170732707337073470735707367073770738707397074070741707427074370744707457074670747707487074970750707517075270753707547075570756707577075870759707607076170762707637076470765707667076770768707697077070771707727077370774707757077670777707787077970780707817078270783707847078570786707877078870789707907079170792707937079470795707967079770798707997080070801708027080370804708057080670807708087080970810708117081270813708147081570816708177081870819708207082170822708237082470825708267082770828708297083070831708327083370834708357083670837708387083970840708417084270843708447084570846708477084870849708507085170852708537085470855708567085770858708597086070861708627086370864708657086670867708687086970870708717087270873708747087570876708777087870879708807088170882708837088470885708867088770888708897089070891708927089370894708957089670897708987089970900709017090270903709047090570906709077090870909709107091170912709137091470915709167091770918709197092070921709227092370924709257092670927709287092970930709317093270933709347093570936709377093870939709407094170942709437094470945709467094770948709497095070951709527095370954709557095670957709587095970960709617096270963709647096570966709677096870969709707097170972709737097470975709767097770978709797098070981709827098370984709857098670987709887098970990709917099270993709947099570996709977099870999710007100171002710037100471005710067100771008710097101071011710127101371014710157101671017710187101971020710217102271023710247102571026710277102871029710307103171032710337103471035710367103771038710397104071041710427104371044710457104671047710487104971050710517105271053710547105571056710577105871059710607106171062710637106471065710667106771068710697107071071710727107371074710757107671077710787107971080710817108271083710847108571086710877108871089710907109171092710937109471095710967109771098710997110071101711027110371104711057110671107711087110971110711117111271113711147111571116711177111871119711207112171122711237112471125711267112771128711297113071131711327113371134711357113671137711387113971140711417114271143711447114571146711477114871149711507115171152711537115471155711567115771158711597116071161711627116371164711657116671167711687116971170711717117271173711747117571176711777117871179711807118171182711837118471185711867118771188711897119071191711927119371194711957119671197711987119971200712017120271203712047120571206712077120871209712107121171212712137121471215712167121771218712197122071221712227122371224712257122671227712287122971230712317123271233712347123571236712377123871239712407124171242712437124471245712467124771248712497125071251712527125371254712557125671257712587125971260712617126271263712647126571266712677126871269712707127171272712737127471275712767127771278712797128071281712827128371284712857128671287712887128971290712917129271293712947129571296712977129871299713007130171302713037130471305713067130771308713097131071311713127131371314713157131671317713187131971320713217132271323713247132571326713277132871329713307133171332713337133471335713367133771338713397134071341713427134371344713457134671347713487134971350713517135271353713547135571356713577135871359713607136171362713637136471365713667136771368713697137071371713727137371374713757137671377713787137971380713817138271383713847138571386713877138871389713907139171392713937139471395713967139771398713997140071401714027140371404714057140671407714087140971410714117141271413714147141571416714177141871419714207142171422714237142471425714267142771428714297143071431714327143371434714357143671437714387143971440714417144271443714447144571446714477144871449714507145171452714537145471455714567145771458714597146071461714627146371464714657146671467714687146971470714717147271473714747147571476714777147871479714807148171482714837148471485714867148771488714897149071491714927149371494714957149671497714987149971500715017150271503715047150571506715077150871509715107151171512715137151471515715167151771518715197152071521715227152371524715257152671527715287152971530715317153271533715347153571536715377153871539715407154171542715437154471545715467154771548715497155071551715527155371554715557155671557715587155971560715617156271563715647156571566715677156871569715707157171572715737157471575715767157771578715797158071581715827158371584715857158671587715887158971590715917159271593715947159571596715977159871599716007160171602716037160471605716067160771608716097161071611716127161371614716157161671617716187161971620716217162271623716247162571626716277162871629716307163171632716337163471635716367163771638716397164071641716427164371644716457164671647716487164971650716517165271653716547165571656716577165871659716607166171662716637166471665716667166771668716697167071671716727167371674716757167671677716787167971680716817168271683716847168571686716877168871689716907169171692716937169471695716967169771698716997170071701717027170371704717057170671707717087170971710717117171271713717147171571716717177171871719717207172171722717237172471725717267172771728717297173071731717327173371734717357173671737717387173971740717417174271743717447174571746717477174871749717507175171752717537175471755717567175771758717597176071761717627176371764717657176671767717687176971770717717177271773717747177571776717777177871779717807178171782717837178471785717867178771788717897179071791717927179371794717957179671797717987179971800718017180271803718047180571806718077180871809718107181171812718137181471815718167181771818718197182071821718227182371824718257182671827718287182971830718317183271833718347183571836718377183871839718407184171842718437184471845718467184771848718497185071851718527185371854718557185671857718587185971860718617186271863718647186571866718677186871869718707187171872718737187471875718767187771878718797188071881718827188371884718857188671887718887188971890718917189271893718947189571896718977189871899719007190171902719037190471905719067190771908719097191071911719127191371914719157191671917719187191971920719217192271923719247192571926719277192871929719307193171932719337193471935719367193771938719397194071941719427194371944719457194671947719487194971950719517195271953719547195571956719577195871959719607196171962719637196471965719667196771968719697197071971719727197371974719757197671977719787197971980719817198271983719847198571986719877198871989719907199171992719937199471995719967199771998719997200072001720027200372004720057200672007720087200972010720117201272013720147201572016720177201872019720207202172022720237202472025720267202772028720297203072031720327203372034720357203672037720387203972040720417204272043720447204572046720477204872049720507205172052720537205472055720567205772058720597206072061720627206372064720657206672067720687206972070720717207272073720747207572076720777207872079720807208172082720837208472085720867208772088720897209072091720927209372094720957209672097720987209972100721017210272103721047210572106721077210872109721107211172112721137211472115721167211772118721197212072121721227212372124721257212672127721287212972130721317213272133721347213572136721377213872139721407214172142721437214472145721467214772148721497215072151721527215372154721557215672157721587215972160721617216272163721647216572166721677216872169721707217172172721737217472175721767217772178721797218072181721827218372184721857218672187721887218972190721917219272193721947219572196721977219872199722007220172202722037220472205722067220772208722097221072211722127221372214722157221672217722187221972220722217222272223722247222572226722277222872229722307223172232722337223472235722367223772238722397224072241722427224372244722457224672247722487224972250722517225272253722547225572256722577225872259722607226172262722637226472265722667226772268722697227072271722727227372274722757227672277722787227972280722817228272283722847228572286722877228872289722907229172292722937229472295722967229772298722997230072301723027230372304723057230672307723087230972310723117231272313723147231572316723177231872319723207232172322723237232472325723267232772328723297233072331723327233372334723357233672337723387233972340723417234272343723447234572346723477234872349723507235172352723537235472355723567235772358723597236072361723627236372364723657236672367723687236972370723717237272373723747237572376723777237872379723807238172382723837238472385723867238772388723897239072391723927239372394723957239672397723987239972400724017240272403724047240572406724077240872409724107241172412724137241472415724167241772418724197242072421724227242372424724257242672427724287242972430724317243272433724347243572436724377243872439724407244172442724437244472445724467244772448724497245072451724527245372454724557245672457724587245972460724617246272463724647246572466724677246872469724707247172472724737247472475724767247772478724797248072481724827248372484724857248672487724887248972490724917249272493724947249572496724977249872499725007250172502725037250472505725067250772508725097251072511725127251372514725157251672517725187251972520725217252272523725247252572526725277252872529725307253172532725337253472535725367253772538725397254072541725427254372544725457254672547725487254972550725517255272553725547255572556725577255872559725607256172562725637256472565725667256772568725697257072571725727257372574725757257672577725787257972580725817258272583725847258572586725877258872589725907259172592725937259472595725967259772598725997260072601726027260372604726057260672607726087260972610726117261272613726147261572616726177261872619726207262172622726237262472625726267262772628726297263072631726327263372634726357263672637726387263972640726417264272643726447264572646726477264872649726507265172652726537265472655726567265772658726597266072661726627266372664726657266672667726687266972670726717267272673726747267572676726777267872679726807268172682726837268472685726867268772688726897269072691726927269372694726957269672697726987269972700727017270272703727047270572706727077270872709727107271172712727137271472715727167271772718727197272072721727227272372724727257272672727727287272972730727317273272733727347273572736727377273872739727407274172742727437274472745727467274772748727497275072751727527275372754727557275672757727587275972760727617276272763727647276572766727677276872769727707277172772727737277472775727767277772778727797278072781727827278372784727857278672787727887278972790727917279272793727947279572796727977279872799728007280172802728037280472805728067280772808728097281072811728127281372814728157281672817728187281972820728217282272823728247282572826728277282872829728307283172832728337283472835728367283772838728397284072841728427284372844728457284672847728487284972850728517285272853728547285572856728577285872859728607286172862728637286472865728667286772868728697287072871728727287372874728757287672877728787287972880728817288272883728847288572886728877288872889728907289172892728937289472895728967289772898728997290072901729027290372904729057290672907729087290972910729117291272913729147291572916729177291872919729207292172922729237292472925729267292772928729297293072931729327293372934729357293672937729387293972940729417294272943729447294572946729477294872949729507295172952729537295472955729567295772958729597296072961729627296372964729657296672967729687296972970729717297272973729747297572976729777297872979729807298172982729837298472985729867298772988729897299072991729927299372994729957299672997729987299973000730017300273003730047300573006730077300873009730107301173012730137301473015730167301773018730197302073021730227302373024730257302673027730287302973030730317303273033730347303573036730377303873039730407304173042730437304473045730467304773048730497305073051730527305373054730557305673057730587305973060730617306273063730647306573066730677306873069730707307173072730737307473075730767307773078730797308073081730827308373084730857308673087730887308973090730917309273093730947309573096730977309873099731007310173102731037310473105731067310773108731097311073111731127311373114731157311673117731187311973120731217312273123731247312573126731277312873129731307313173132731337313473135731367313773138731397314073141731427314373144731457314673147731487314973150731517315273153731547315573156731577315873159731607316173162731637316473165731667316773168731697317073171731727317373174731757317673177731787317973180731817318273183731847318573186731877318873189731907319173192731937319473195731967319773198731997320073201732027320373204732057320673207732087320973210732117321273213732147321573216732177321873219732207322173222732237322473225732267322773228732297323073231732327323373234732357323673237732387323973240732417324273243732447324573246732477324873249732507325173252732537325473255732567325773258732597326073261732627326373264732657326673267732687326973270732717327273273732747327573276732777327873279732807328173282732837328473285732867328773288732897329073291732927329373294732957329673297732987329973300733017330273303733047330573306733077330873309733107331173312733137331473315733167331773318733197332073321733227332373324733257332673327733287332973330733317333273333733347333573336733377333873339733407334173342733437334473345733467334773348733497335073351733527335373354733557335673357733587335973360733617336273363733647336573366733677336873369733707337173372733737337473375733767337773378733797338073381733827338373384733857338673387733887338973390733917339273393733947339573396733977339873399734007340173402734037340473405734067340773408734097341073411734127341373414734157341673417734187341973420734217342273423734247342573426734277342873429734307343173432734337343473435734367343773438734397344073441734427344373444734457344673447734487344973450734517345273453734547345573456734577345873459734607346173462734637346473465734667346773468734697347073471734727347373474734757347673477734787347973480734817348273483734847348573486734877348873489734907349173492734937349473495734967349773498734997350073501735027350373504735057350673507735087350973510735117351273513735147351573516735177351873519735207352173522735237352473525735267352773528735297353073531735327353373534735357353673537735387353973540735417354273543735447354573546735477354873549735507355173552735537355473555735567355773558735597356073561735627356373564735657356673567735687356973570735717357273573735747357573576735777357873579735807358173582735837358473585735867358773588735897359073591735927359373594735957359673597735987359973600736017360273603736047360573606736077360873609736107361173612736137361473615736167361773618736197362073621736227362373624736257362673627736287362973630736317363273633736347363573636736377363873639736407364173642736437364473645736467364773648736497365073651736527365373654736557365673657736587365973660736617366273663736647366573666736677366873669736707367173672736737367473675736767367773678736797368073681736827368373684736857368673687736887368973690736917369273693736947369573696736977369873699737007370173702737037370473705737067370773708737097371073711737127371373714737157371673717737187371973720737217372273723737247372573726737277372873729737307373173732737337373473735737367373773738737397374073741737427374373744737457374673747737487374973750737517375273753737547375573756737577375873759737607376173762737637376473765737667376773768737697377073771737727377373774737757377673777737787377973780737817378273783737847378573786737877378873789737907379173792737937379473795737967379773798737997380073801738027380373804738057380673807738087380973810738117381273813738147381573816738177381873819738207382173822738237382473825738267382773828738297383073831738327383373834738357383673837738387383973840738417384273843738447384573846738477384873849738507385173852738537385473855738567385773858738597386073861738627386373864738657386673867738687386973870738717387273873738747387573876738777387873879738807388173882738837388473885738867388773888738897389073891738927389373894738957389673897738987389973900739017390273903739047390573906739077390873909739107391173912739137391473915739167391773918739197392073921739227392373924739257392673927739287392973930739317393273933739347393573936739377393873939739407394173942739437394473945739467394773948739497395073951739527395373954739557395673957739587395973960739617396273963739647396573966739677396873969739707397173972739737397473975739767397773978739797398073981739827398373984739857398673987739887398973990739917399273993739947399573996739977399873999740007400174002740037400474005740067400774008740097401074011740127401374014740157401674017740187401974020740217402274023740247402574026740277402874029740307403174032740337403474035740367403774038740397404074041740427404374044740457404674047740487404974050740517405274053740547405574056740577405874059740607406174062740637406474065740667406774068740697407074071740727407374074740757407674077740787407974080740817408274083740847408574086740877408874089740907409174092740937409474095740967409774098740997410074101741027410374104741057410674107741087410974110741117411274113741147411574116741177411874119741207412174122741237412474125741267412774128741297413074131741327413374134741357413674137741387413974140741417414274143741447414574146741477414874149741507415174152741537415474155741567415774158741597416074161741627416374164741657416674167741687416974170741717417274173741747417574176741777417874179741807418174182741837418474185741867418774188741897419074191741927419374194741957419674197741987419974200742017420274203742047420574206742077420874209742107421174212742137421474215742167421774218742197422074221742227422374224742257422674227742287422974230742317423274233742347423574236742377423874239742407424174242742437424474245742467424774248742497425074251742527425374254742557425674257742587425974260742617426274263742647426574266742677426874269742707427174272742737427474275742767427774278742797428074281742827428374284742857428674287742887428974290742917429274293742947429574296742977429874299743007430174302743037430474305743067430774308743097431074311743127431374314743157431674317743187431974320743217432274323743247432574326743277432874329743307433174332743337433474335743367433774338743397434074341743427434374344743457434674347743487434974350743517435274353743547435574356743577435874359743607436174362743637436474365743667436774368743697437074371743727437374374743757437674377743787437974380743817438274383743847438574386743877438874389743907439174392743937439474395743967439774398743997440074401744027440374404744057440674407744087440974410744117441274413744147441574416744177441874419744207442174422744237442474425744267442774428744297443074431744327443374434744357443674437744387443974440744417444274443744447444574446744477444874449744507445174452744537445474455744567445774458744597446074461744627446374464744657446674467744687446974470744717447274473744747447574476744777447874479744807448174482744837448474485744867448774488744897449074491744927449374494744957449674497744987449974500745017450274503745047450574506745077450874509745107451174512745137451474515745167451774518745197452074521745227452374524745257452674527745287452974530745317453274533745347453574536745377453874539745407454174542745437454474545745467454774548745497455074551745527455374554745557455674557745587455974560745617456274563745647456574566745677456874569745707457174572745737457474575745767457774578745797458074581745827458374584745857458674587745887458974590745917459274593745947459574596745977459874599746007460174602746037460474605746067460774608746097461074611746127461374614746157461674617746187461974620746217462274623746247462574626746277462874629746307463174632746337463474635746367463774638746397464074641746427464374644746457464674647746487464974650746517465274653746547465574656746577465874659746607466174662746637466474665746667466774668746697467074671746727467374674746757467674677746787467974680746817468274683746847468574686746877468874689746907469174692746937469474695746967469774698746997470074701747027470374704747057470674707747087470974710747117471274713747147471574716747177471874719747207472174722747237472474725747267472774728747297473074731747327473374734747357473674737747387473974740747417474274743747447474574746747477474874749747507475174752747537475474755747567475774758747597476074761747627476374764747657476674767747687476974770747717477274773747747477574776747777477874779747807478174782747837478474785747867478774788747897479074791747927479374794747957479674797747987479974800748017480274803748047480574806748077480874809748107481174812748137481474815748167481774818748197482074821748227482374824748257482674827748287482974830748317483274833748347483574836748377483874839748407484174842748437484474845748467484774848748497485074851748527485374854748557485674857748587485974860748617486274863748647486574866748677486874869748707487174872748737487474875748767487774878748797488074881748827488374884748857488674887748887488974890748917489274893748947489574896748977489874899749007490174902749037490474905749067490774908749097491074911749127491374914749157491674917749187491974920749217492274923749247492574926749277492874929749307493174932749337493474935749367493774938749397494074941749427494374944749457494674947749487494974950749517495274953749547495574956749577495874959749607496174962749637496474965749667496774968749697497074971749727497374974749757497674977749787497974980749817498274983749847498574986749877498874989749907499174992749937499474995749967499774998749997500075001750027500375004750057500675007750087500975010750117501275013750147501575016750177501875019750207502175022750237502475025750267502775028750297503075031750327503375034750357503675037750387503975040750417504275043750447504575046750477504875049750507505175052750537505475055750567505775058750597506075061750627506375064750657506675067750687506975070750717507275073750747507575076750777507875079750807508175082750837508475085750867508775088750897509075091750927509375094750957509675097750987509975100751017510275103751047510575106751077510875109751107511175112751137511475115751167511775118751197512075121751227512375124751257512675127751287512975130751317513275133751347513575136751377513875139751407514175142751437514475145751467514775148751497515075151751527515375154751557515675157751587515975160751617516275163751647516575166751677516875169751707517175172751737517475175751767517775178751797518075181751827518375184751857518675187751887518975190751917519275193751947519575196751977519875199752007520175202752037520475205752067520775208752097521075211752127521375214752157521675217752187521975220752217522275223752247522575226752277522875229752307523175232752337523475235752367523775238752397524075241752427524375244752457524675247752487524975250752517525275253752547525575256752577525875259752607526175262752637526475265752667526775268752697527075271752727527375274752757527675277752787527975280752817528275283752847528575286752877528875289752907529175292752937529475295752967529775298752997530075301753027530375304753057530675307753087530975310753117531275313753147531575316753177531875319753207532175322753237532475325753267532775328753297533075331753327533375334753357533675337753387533975340753417534275343753447534575346753477534875349753507535175352753537535475355753567535775358753597536075361753627536375364753657536675367753687536975370753717537275373753747537575376753777537875379753807538175382753837538475385753867538775388753897539075391753927539375394753957539675397753987539975400754017540275403754047540575406754077540875409754107541175412754137541475415754167541775418754197542075421754227542375424754257542675427754287542975430754317543275433754347543575436754377543875439754407544175442754437544475445754467544775448754497545075451754527545375454754557545675457754587545975460754617546275463754647546575466754677546875469754707547175472754737547475475754767547775478754797548075481754827548375484754857548675487754887548975490754917549275493754947549575496754977549875499755007550175502755037550475505755067550775508755097551075511755127551375514755157551675517755187551975520755217552275523755247552575526755277552875529755307553175532755337553475535755367553775538755397554075541755427554375544755457554675547755487554975550755517555275553755547555575556755577555875559755607556175562755637556475565755667556775568755697557075571755727557375574755757557675577755787557975580755817558275583755847558575586755877558875589755907559175592755937559475595755967559775598755997560075601756027560375604756057560675607756087560975610756117561275613756147561575616756177561875619756207562175622756237562475625756267562775628756297563075631756327563375634756357563675637756387563975640756417564275643756447564575646756477564875649756507565175652756537565475655756567565775658756597566075661756627566375664756657566675667756687566975670756717567275673756747567575676756777567875679756807568175682756837568475685756867568775688756897569075691756927569375694756957569675697756987569975700757017570275703757047570575706757077570875709757107571175712757137571475715757167571775718757197572075721757227572375724757257572675727757287572975730757317573275733757347573575736757377573875739757407574175742757437574475745757467574775748757497575075751757527575375754757557575675757757587575975760757617576275763757647576575766757677576875769757707577175772757737577475775757767577775778757797578075781757827578375784757857578675787757887578975790757917579275793757947579575796757977579875799758007580175802758037580475805758067580775808758097581075811758127581375814758157581675817758187581975820758217582275823758247582575826758277582875829758307583175832758337583475835758367583775838758397584075841758427584375844758457584675847758487584975850758517585275853758547585575856758577585875859758607586175862758637586475865758667586775868758697587075871758727587375874758757587675877758787587975880758817588275883758847588575886758877588875889758907589175892758937589475895758967589775898758997590075901759027590375904759057590675907759087590975910759117591275913759147591575916759177591875919759207592175922759237592475925759267592775928759297593075931759327593375934759357593675937759387593975940759417594275943759447594575946759477594875949759507595175952759537595475955759567595775958759597596075961759627596375964759657596675967759687596975970759717597275973759747597575976759777597875979759807598175982759837598475985759867598775988759897599075991759927599375994759957599675997759987599976000760017600276003760047600576006760077600876009760107601176012760137601476015760167601776018760197602076021760227602376024760257602676027760287602976030760317603276033760347603576036760377603876039760407604176042760437604476045760467604776048760497605076051760527605376054760557605676057760587605976060760617606276063760647606576066760677606876069760707607176072760737607476075760767607776078760797608076081760827608376084760857608676087760887608976090760917609276093760947609576096760977609876099761007610176102761037610476105761067610776108761097611076111761127611376114761157611676117761187611976120761217612276123761247612576126761277612876129761307613176132761337613476135761367613776138761397614076141761427614376144761457614676147761487614976150761517615276153761547615576156761577615876159761607616176162761637616476165761667616776168761697617076171761727617376174761757617676177761787617976180761817618276183761847618576186761877618876189761907619176192761937619476195761967619776198761997620076201762027620376204762057620676207762087620976210762117621276213762147621576216762177621876219762207622176222762237622476225762267622776228762297623076231762327623376234762357623676237762387623976240762417624276243762447624576246762477624876249762507625176252762537625476255762567625776258762597626076261762627626376264762657626676267762687626976270762717627276273762747627576276762777627876279762807628176282762837628476285762867628776288762897629076291762927629376294762957629676297762987629976300763017630276303763047630576306763077630876309763107631176312763137631476315763167631776318763197632076321763227632376324763257632676327763287632976330763317633276333763347633576336763377633876339763407634176342763437634476345763467634776348763497635076351763527635376354763557635676357763587635976360763617636276363763647636576366763677636876369763707637176372763737637476375763767637776378763797638076381763827638376384763857638676387763887638976390763917639276393763947639576396763977639876399764007640176402764037640476405764067640776408764097641076411764127641376414764157641676417764187641976420764217642276423764247642576426764277642876429764307643176432764337643476435764367643776438764397644076441764427644376444764457644676447764487644976450764517645276453764547645576456764577645876459764607646176462764637646476465764667646776468764697647076471764727647376474764757647676477764787647976480764817648276483764847648576486764877648876489764907649176492764937649476495764967649776498764997650076501765027650376504765057650676507765087650976510765117651276513765147651576516765177651876519765207652176522765237652476525765267652776528765297653076531765327653376534765357653676537765387653976540765417654276543765447654576546765477654876549765507655176552765537655476555765567655776558765597656076561765627656376564765657656676567765687656976570765717657276573765747657576576765777657876579765807658176582765837658476585765867658776588765897659076591765927659376594765957659676597765987659976600766017660276603766047660576606766077660876609766107661176612766137661476615766167661776618766197662076621766227662376624766257662676627766287662976630766317663276633766347663576636766377663876639766407664176642766437664476645766467664776648766497665076651766527665376654766557665676657766587665976660766617666276663766647666576666766677666876669766707667176672766737667476675766767667776678766797668076681766827668376684766857668676687766887668976690766917669276693766947669576696766977669876699767007670176702767037670476705767067670776708767097671076711767127671376714767157671676717767187671976720767217672276723767247672576726767277672876729767307673176732767337673476735767367673776738767397674076741767427674376744767457674676747767487674976750767517675276753767547675576756767577675876759767607676176762767637676476765767667676776768767697677076771767727677376774767757677676777767787677976780767817678276783767847678576786767877678876789767907679176792767937679476795767967679776798767997680076801768027680376804768057680676807768087680976810768117681276813768147681576816768177681876819768207682176822768237682476825768267682776828768297683076831768327683376834768357683676837768387683976840768417684276843768447684576846768477684876849768507685176852768537685476855768567685776858768597686076861768627686376864768657686676867768687686976870768717687276873768747687576876768777687876879768807688176882768837688476885768867688776888768897689076891768927689376894768957689676897768987689976900769017690276903769047690576906769077690876909769107691176912769137691476915769167691776918769197692076921769227692376924769257692676927769287692976930769317693276933769347693576936769377693876939769407694176942769437694476945769467694776948769497695076951769527695376954769557695676957769587695976960769617696276963769647696576966769677696876969769707697176972769737697476975769767697776978769797698076981769827698376984769857698676987769887698976990769917699276993769947699576996769977699876999770007700177002770037700477005770067700777008770097701077011770127701377014770157701677017770187701977020770217702277023770247702577026770277702877029770307703177032770337703477035770367703777038770397704077041770427704377044770457704677047770487704977050770517705277053770547705577056770577705877059770607706177062770637706477065770667706777068770697707077071770727707377074770757707677077770787707977080770817708277083770847708577086770877708877089770907709177092770937709477095770967709777098770997710077101771027710377104771057710677107771087710977110771117711277113771147711577116771177711877119771207712177122771237712477125771267712777128771297713077131771327713377134771357713677137771387713977140771417714277143771447714577146771477714877149771507715177152771537715477155771567715777158771597716077161771627716377164771657716677167771687716977170771717717277173771747717577176771777717877179771807718177182771837718477185771867718777188771897719077191771927719377194771957719677197771987719977200772017720277203772047720577206772077720877209772107721177212772137721477215772167721777218772197722077221772227722377224772257722677227772287722977230772317723277233772347723577236772377723877239772407724177242772437724477245772467724777248772497725077251772527725377254772557725677257772587725977260772617726277263772647726577266772677726877269772707727177272772737727477275772767727777278772797728077281772827728377284772857728677287772887728977290772917729277293772947729577296772977729877299773007730177302773037730477305773067730777308773097731077311773127731377314773157731677317773187731977320773217732277323773247732577326773277732877329773307733177332773337733477335773367733777338773397734077341773427734377344773457734677347773487734977350773517735277353773547735577356773577735877359773607736177362773637736477365773667736777368773697737077371773727737377374773757737677377773787737977380773817738277383773847738577386773877738877389773907739177392773937739477395773967739777398773997740077401774027740377404774057740677407774087740977410774117741277413774147741577416774177741877419774207742177422774237742477425774267742777428774297743077431774327743377434774357743677437774387743977440774417744277443774447744577446774477744877449774507745177452774537745477455774567745777458774597746077461774627746377464774657746677467774687746977470774717747277473774747747577476774777747877479774807748177482774837748477485774867748777488774897749077491774927749377494774957749677497774987749977500775017750277503775047750577506775077750877509775107751177512775137751477515775167751777518775197752077521775227752377524775257752677527775287752977530775317753277533775347753577536775377753877539775407754177542775437754477545775467754777548775497755077551775527755377554775557755677557775587755977560775617756277563775647756577566775677756877569775707757177572775737757477575775767757777578775797758077581775827758377584775857758677587775887758977590775917759277593775947759577596775977759877599776007760177602776037760477605776067760777608776097761077611776127761377614776157761677617776187761977620776217762277623776247762577626776277762877629776307763177632776337763477635776367763777638776397764077641776427764377644776457764677647776487764977650776517765277653776547765577656776577765877659776607766177662776637766477665776667766777668776697767077671776727767377674776757767677677776787767977680776817768277683776847768577686776877768877689776907769177692776937769477695776967769777698776997770077701777027770377704777057770677707777087770977710777117771277713777147771577716777177771877719777207772177722777237772477725777267772777728777297773077731777327773377734777357773677737777387773977740777417774277743777447774577746777477774877749777507775177752777537775477755777567775777758777597776077761777627776377764777657776677767777687776977770777717777277773777747777577776777777777877779777807778177782777837778477785777867778777788777897779077791777927779377794777957779677797777987779977800778017780277803778047780577806778077780877809778107781177812778137781477815778167781777818778197782077821778227782377824778257782677827778287782977830778317783277833778347783577836778377783877839778407784177842778437784477845778467784777848778497785077851778527785377854778557785677857778587785977860778617786277863778647786577866778677786877869778707787177872778737787477875778767787777878778797788077881778827788377884778857788677887778887788977890778917789277893778947789577896778977789877899779007790177902779037790477905779067790777908779097791077911779127791377914779157791677917779187791977920779217792277923779247792577926779277792877929779307793177932779337793477935779367793777938779397794077941779427794377944779457794677947779487794977950779517795277953779547795577956779577795877959779607796177962779637796477965779667796777968779697797077971779727797377974779757797677977779787797977980779817798277983779847798577986779877798877989779907799177992779937799477995779967799777998779997800078001780027800378004780057800678007780087800978010780117801278013780147801578016780177801878019780207802178022780237802478025780267802778028780297803078031780327803378034780357803678037780387803978040780417804278043780447804578046780477804878049780507805178052780537805478055780567805778058780597806078061780627806378064780657806678067780687806978070780717807278073780747807578076780777807878079780807808178082780837808478085780867808778088780897809078091780927809378094780957809678097780987809978100781017810278103781047810578106781077810878109781107811178112781137811478115781167811778118781197812078121781227812378124781257812678127781287812978130781317813278133781347813578136781377813878139781407814178142781437814478145781467814778148781497815078151781527815378154781557815678157781587815978160781617816278163781647816578166781677816878169781707817178172781737817478175781767817778178781797818078181781827818378184781857818678187781887818978190781917819278193781947819578196781977819878199782007820178202782037820478205782067820778208782097821078211782127821378214782157821678217782187821978220782217822278223782247822578226782277822878229782307823178232782337823478235782367823778238782397824078241782427824378244782457824678247782487824978250782517825278253782547825578256782577825878259782607826178262782637826478265 |
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('af');
- test('parse', function (assert) {
- var tests = 'Januarie Jan_Februarie Feb_Maart Mrt_April Apr_Mei Mei_Junie Jun_Julie Jul_Augustus Aug_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sondag, Februarie 14de 2010, 3:25:50 nm'],
- ['ddd, hA', 'Son, 3NM'],
- ['M Mo MM MMMM MMM', '2 2de 02 Februarie Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14de 14'],
- ['d do dddd ddd dd', '0 0de Sondag Son So'],
- ['DDD DDDo DDDD', '45 45ste 045'],
- ['w wo ww', '6 6de 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'nm NM'],
- ['[the] DDDo [day of the year]', 'the 45ste day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 Februarie 2010'],
- ['LLL', '14 Februarie 2010 15:25'],
- ['LLLL', 'Sondag, 14 Februarie 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 15:25'],
- ['llll', 'Son, 14 Feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste');
- });
- test('format month', function (assert) {
- var expected = 'Januarie Jan_Februarie Feb_Maart Mrt_April Apr_Mei Mei_Junie Jun_Julie Jul_Augustus Aug_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sondag Son So_Maandag Maa Ma_Dinsdag Din Di_Woensdag Woe Wo_Donderdag Don Do_Vrydag Vry Vr_Saterdag Sat Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '\'n paar sekondes', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n minuut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n minuut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minute', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n uur', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n uur', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ure', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ure', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ure', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dae', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dae', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dae', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n maand', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n maand', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n maand', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maande', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maande', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maande', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n maand', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maande', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n jaar', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n jaar', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'oor \'n paar sekondes', 'prefix');
- assert.equal(moment(0).from(30000), '\'n paar sekondes gelede', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), '\'n paar sekondes gelede', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'oor \'n paar sekondes', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'oor 5 dae', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Vandag om 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Vandag om 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Vandag om 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Môre om 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Vandag om 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gister om 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar-dz');
- test('parse', function (assert) {
- var tests = 'جانفي:جانفي_فيفري:فيفري_مارس:مارس_أفريل:أفريل_ماي:ماي_جوان:جوان_جويلية:جويلية_أوت:أوت_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(':');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فيفري 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'احد, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 الأحد احد أح'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 فيفري 2010'],
- ['LLL', '14 فيفري 2010 15:25'],
- ['LLLL', 'الأحد 14 فيفري 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 فيفري 2010'],
- ['lll', '14 فيفري 2010 15:25'],
- ['llll', 'احد 14 فيفري 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'جانفي جانفي_فيفري فيفري_مارس مارس_أفريل أفريل_ماي ماي_جوان جوان_جويلية جويلية_أوت أوت_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد احد أح_الإثنين اثنين إث_الثلاثاء ثلاثاء ثلا_الأربعاء اربعاء أر_الخميس خميس خم_الجمعة جمعة جم_السبت سبت سب'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 دقائق', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 دقائق', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ساعات', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ساعات', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 أيام', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 أيام', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 أشهر', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 أشهر', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سنوات', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سنوات', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'في ثوان', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'في 5 أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم على الساعة 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2016, 1, 4]).format('w ww wo'), '5 05 5', 'Feb 4 2016 should be week 5');
- assert.equal(moment([2016, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2016 should be week 1');
- assert.equal(moment([2016, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2016 should be week 1');
- assert.equal(moment([2016, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2016 should be week 2');
- assert.equal(moment([2016, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2016 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar-kw');
- test('parse', function (assert) {
- var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(':');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'احد, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 الأحد احد ح'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '9 9 09'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 فبراير 2010'],
- ['LLL', '14 فبراير 2010 15:25'],
- ['LLLL', 'الأحد 14 فبراير 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 فبراير 2010'],
- ['lll', '14 فبراير 2010 15:25'],
- ['llll', 'احد 14 فبراير 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 دقائق', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 دقائق', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ساعات', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ساعات', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 أيام', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 أيام', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 أشهر', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 أشهر', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سنوات', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سنوات', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'في ثوان', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'في 5 أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم على الساعة 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '2 02 2', 'Jan 1 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '3 03 3', 'Jan 8 2012 should be week 3');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '4 04 4', 'Jan 15 2012 should be week 4');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar-ly');
- var months = [
- 'يناير',
- 'فبراير',
- 'مارس',
- 'أبريل',
- 'مايو',
- 'يونيو',
- 'يوليو',
- 'أغسطس',
- 'سبتمبر',
- 'أكتوبر',
- 'نوفمبر',
- 'ديسمبر'
- ];
- test('parse', function (assert) {
- var tests = months, i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month());
- }
- for (i = 0; i < 12; i++) {
- equalTest(tests[i], 'MMM', i);
- equalTest(tests[i], 'MMM', i);
- equalTest(tests[i], 'MMMM', i);
- equalTest(tests[i], 'MMMM', i);
- equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، فبراير 14 2010، 3:25:50 م'],
- ['ddd, hA', 'أحد، 3م'],
- ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 الأحد أحد ح'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'م م'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14/\u200f2/\u200f2010'],
- ['LL', '14 فبراير 2010'],
- ['LLL', '14 فبراير 2010 15:25'],
- ['LLLL', 'الأحد 14 فبراير 2010 15:25'],
- ['l', '14/\u200f2/\u200f2010'],
- ['ll', '14 فبراير 2010'],
- ['lll', '14 فبراير 2010 15:25'],
- ['llll', 'أحد 14 فبراير 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = months, i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i], expected[i]);
- assert.equal(moment([2011, i, 1]).format('MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '44 ثانية', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة واحدة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة واحدة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'دقيقتان', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 دقيقة', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة واحدة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة واحدة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'ساعتان', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ساعة', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم واحد', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم واحد', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'يومان', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم واحد', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 يومًا', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر واحد', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر واحد', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر واحد', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'شهران', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'شهران', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر واحد', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'عام واحد', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'عامان', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'عام واحد', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 أعوام', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'بعد 30 ثانية', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ 30 ثانية', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثانية واحدة', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'بعد 30 ثانية', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'بعد 5 أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم عند الساعة 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم عند الساعة 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم عند الساعة 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدًا عند الساعة 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم عند الساعة 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس عند الساعة 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting wednesday custom', function (assert) {
- assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '2002-12-28', 'Week 1 of 2003 should be Dec 28 2002');
- assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '2002-12-28', 'Week 1 of 2003 should be Dec 28 2002');
- assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '2003 1 6', 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6');
- assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '2003 1 0', '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3');
- });
- test('no leading zeros in long date formats', function (assert) {
- var i, j, longDateStr, shortDateStr;
- for (i = 1; i <= 9; ++i) {
- for (j = 1; j <= 9; ++j) {
- longDateStr = moment([2014, i, j]).format('L');
- shortDateStr = moment([2014, i, j]).format('l');
- assert.equal(longDateStr, shortDateStr, 'should not have leading zeros in month or day');
- }
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar-ma');
- test('parse', function (assert) {
- var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(':');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'احد, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 الأحد احد ح'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 فبراير 2010'],
- ['LLL', '14 فبراير 2010 15:25'],
- ['LLLL', 'الأحد 14 فبراير 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 فبراير 2010'],
- ['lll', '14 فبراير 2010 15:25'],
- ['llll', 'احد 14 فبراير 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 دقائق', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 دقائق', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ساعات', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ساعات', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 أيام', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 أيام', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 أشهر', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 أشهر', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سنوات', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سنوات', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'في ثوان', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'في 5 أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم على الساعة 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar-sa');
- test('parse', function (assert) {
- var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_مايو:مايو_يونيو:يونيو_يوليو:يوليو_أغسطس:أغسطس_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month());
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(':');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م'],
- ['ddd, hA', 'أحد، ٣م'],
- ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ فبراير فبراير'],
- ['YYYY YY', '٢٠١٠ ١٠'],
- ['D Do DD', '١٤ ١٤ ١٤'],
- ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'],
- ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'],
- ['w wo ww', '٨ ٨ ٠٨'],
- ['h hh', '٣ ٠٣'],
- ['H HH', '١٥ ١٥'],
- ['m mm', '٢٥ ٢٥'],
- ['s ss', '٥٠ ٥٠'],
- ['a A', 'م م'],
- ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'],
- ['LT', '١٥:٢٥'],
- ['LTS', '١٥:٢٥:٥٠'],
- ['L', '١٤/٠٢/٢٠١٠'],
- ['LL', '١٤ فبراير ٢٠١٠'],
- ['LLL', '١٤ فبراير ٢٠١٠ ١٥:٢٥'],
- ['LLLL', 'الأحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'],
- ['l', '١٤/٢/٢٠١٠'],
- ['ll', '١٤ فبراير ٢٠١٠'],
- ['lll', '١٤ فبراير ٢٠١٠ ١٥:٢٥'],
- ['llll', 'أحد ١٤ فبراير ٢٠١٠ ١٥:٢٥']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31');
- });
- test('format month', function (assert) {
- var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_مايو مايو_يونيو يونيو_يوليو يوليو_أغسطس أغسطس_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '٢ دقائق', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '٤٤ دقائق', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '٢ ساعات', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '٥ ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '٢١ ساعات', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '٢ أيام', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '٥ أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '٢٥ أيام', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '٢ أشهر', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '٢ أشهر', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '٣ أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '٥ أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '٢ سنوات', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '٥ سنوات', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'في ثوان', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'في ٥ أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم على الساعة ١٢:٠٠', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة ١٢:٢٥', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة ١٣:٠٠', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة ١٢:٠٠', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة ١١:٠٠', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة ١٢:٠٠', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting wednesday custom', function (assert) {
- assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '٢٠٠٣-٠١-٠٤', '2003 1 6 : gggg w d');
- assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٩', '2003 1 0 : gggg w e');
- assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '٢٠٠٣ ١ ٦', '2003 1 6 : gggg w d');
- assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '٢٠٠٣ ١ ٠', '2003 1 0 : gggg w e');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '٥٣ ٥٣ ٥٣', '2011 11 31');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', '2012 0 6');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '١ ٠١ ١', '2012 0 7');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', '2012 0 13');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٢ ٠٢ ٢', '2012 0 14');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar-tn');
- test('parse', function (assert) {
- var tests = 'جانفي:جانفي_فيفري:فيفري_مارس:مارس_أفريل:أفريل_ماي:ماي_جوان:جوان_جويلية:جويلية_أوت:أوت_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(':');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فيفري 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'أحد, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 الأحد أحد ح'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 فيفري 2010'],
- ['LLL', '14 فيفري 2010 15:25'],
- ['LLLL', 'الأحد 14 فيفري 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 فيفري 2010'],
- ['lll', '14 فيفري 2010 15:25'],
- ['llll', 'أحد 14 فيفري 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'جانفي جانفي_فيفري فيفري_مارس مارس_أفريل أفريل_ماي ماي_جوان جوان_جويلية جويلية_أوت أوت_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 44
- }), true), 'ثوان', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 45
- }), true), 'دقيقة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 89
- }), true), 'دقيقة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 90
- }), true), '2 دقائق', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 44
- }), true), '44 دقائق', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 45
- }), true), 'ساعة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 89
- }), true), 'ساعة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 90
- }), true), '2 ساعات', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 5
- }), true), '5 ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 21
- }), true), '21 ساعات', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 22
- }), true), 'يوم', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 35
- }), true), 'يوم', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 36
- }), true), '2 أيام', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 1
- }), true), 'يوم', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 5
- }), true), '5 أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 25
- }), true), '25 أيام', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 26
- }), true), 'شهر', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 30
- }), true), 'شهر', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 43
- }), true), 'شهر', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 46
- }), true), '2 أشهر', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 74
- }), true), '2 أشهر', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 76
- }), true), '3 أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- M: 1
- }), true), 'شهر', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- M: 5
- }), true), '5 أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 345
- }), true), 'سنة', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 548
- }), true), '2 سنوات', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- y: 1
- }), true), 'سنة', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- y: 5
- }), true), '5 سنوات', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'في ثوان', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({
- s: 30
- }).fromNow(), 'في ثوان', 'in a few seconds');
- assert.equal(moment().add({
- d: 5
- }).fromNow(), 'في 5 أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم على الساعة 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({
- d: i
- });
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({
- d: i
- });
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({
- w: 1
- }),
- weeksFromNow = moment().add({
- w: 1
- });
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({
- w: 2
- });
- weeksFromNow = moment().add({
- w: 2
- });
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ar');
- var months = [
- 'كانون الثاني يناير',
- 'شباط فبراير',
- 'آذار مارس',
- 'نيسان أبريل',
- 'أيار مايو',
- 'حزيران يونيو',
- 'تموز يوليو',
- 'آب أغسطس',
- 'أيلول سبتمبر',
- 'تشرين الأول أكتوبر',
- 'تشرين الثاني نوفمبر',
- 'كانون الأول ديسمبر'
- ];
- test('parse', function (assert) {
- var tests = months, i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month());
- }
- for (i = 0; i < 12; i++) {
- equalTest(tests[i], 'MMM', i);
- equalTest(tests[i], 'MMM', i);
- equalTest(tests[i], 'MMMM', i);
- equalTest(tests[i], 'MMMM', i);
- equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، شباط فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م'],
- ['ddd, hA', 'أحد، ٣م'],
- ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ شباط فبراير شباط فبراير'],
- ['YYYY YY', '٢٠١٠ ١٠'],
- ['D Do DD', '١٤ ١٤ ١٤'],
- ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'],
- ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'],
- ['w wo ww', '٨ ٨ ٠٨'],
- ['h hh', '٣ ٠٣'],
- ['H HH', '١٥ ١٥'],
- ['m mm', '٢٥ ٢٥'],
- ['s ss', '٥٠ ٥٠'],
- ['a A', 'م م'],
- ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'],
- ['LT', '١٥:٢٥'],
- ['LTS', '١٥:٢٥:٥٠'],
- ['L', '١٤/\u200f٢/\u200f٢٠١٠'],
- ['LL', '١٤ شباط فبراير ٢٠١٠'],
- ['LLL', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'],
- ['LLLL', 'الأحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'],
- ['l', '١٤/\u200f٢/\u200f٢٠١٠'],
- ['ll', '١٤ شباط فبراير ٢٠١٠'],
- ['lll', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'],
- ['llll', 'أحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31');
- });
- test('format month', function (assert) {
- var expected = months, i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i], expected[i]);
- assert.equal(moment([2011, i, 1]).format('MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '٤٤ ثانية', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة واحدة', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة واحدة', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'دقيقتان', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '٤٤ دقيقة', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة واحدة', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة واحدة', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'ساعتان', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '٥ ساعات', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '٢١ ساعة', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم واحد', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم واحد', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'يومان', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم واحد', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '٥ أيام', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '٢٥ يومًا', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر واحد', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر واحد', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر واحد', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'شهران', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'شهران', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '٣ أشهر', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر واحد', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '٥ أشهر', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'عام واحد', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'عامان', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'عام واحد', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '٥ أعوام', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'بعد ٣٠ ثانية', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ٣٠ ثانية', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'منذ ثانية واحدة', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'بعد ٣٠ ثانية', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'بعد ٥ أيام', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اليوم عند الساعة ١٢:٠٠', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم عند الساعة ١٢:٢٥', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم عند الساعة ١٣:٠٠', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'غدًا عند الساعة ١٢:٠٠', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم عند الساعة ١١:٠٠', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس عند الساعة ١٢:٠٠', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting wednesday custom', function (assert) {
- assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002');
- assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002');
- assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '٢٠٠٣ ١ ٦', 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6');
- assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '٢٠٠٣ ١ ٠', '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '١ ٠١ ١', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٣ ٠٣ ٣', 'Jan 14 2012 should be week 3');
- });
- test('no leading zeros in long date formats', function (assert) {
- var i, j, longDateStr, shortDateStr;
- for (i = 1; i <= 9; ++i) {
- for (j = 1; j <= 9; ++j) {
- longDateStr = moment([2014, i, j]).format('L');
- shortDateStr = moment([2014, i, j]).format('l');
- assert.equal(longDateStr, shortDateStr, 'should not have leading zeros in month or day');
- }
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('az');
- test('parse', function (assert) {
- var tests = 'yanvar yan_fevral fev_mart mar_Aprel apr_may may_iyun iyn_iyul iyl_Avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, D MMMM YYYY, HH:mm:ss', 'Bazar, 14 fevral 2010, 15:25:50'],
- ['ddd, A h', 'Baz, gündüz 3'],
- ['M Mo MM MMMM MMM', '2 2-nci 02 fevral fev'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-üncü 14'],
- ['d do dddd ddd dd', '0 0-ıncı Bazar Baz Bz'],
- ['DDD DDDo DDDD', '45 45-inci 045'],
- ['w wo ww', '7 7-nci 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'gündüz gündüz'],
- ['[ilin] DDDo [günü]', 'ilin 45-inci günü'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 fevral 2010'],
- ['LLL', '14 fevral 2010 15:25'],
- ['LLLL', 'Bazar, 14 fevral 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 fev 2010'],
- ['lll', '14 fev 2010 15:25'],
- ['llll', 'Baz, 14 fev 2010 15:25']
- ],
- DDDo = [
- [359, '360-ıncı'],
- [199, '200-üncü'],
- [149, '150-nci']
- ],
- dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- DDDoDt,
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- for (i = 0; i < DDDo.length; i++) {
- DDDoDt = moment([2010]);
- assert.equal(DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-inci', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-nci', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-üncü', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-üncü', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-inci', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ncı', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-nci', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-inci', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-uncu', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-uncu', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-inci', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-nci', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-üncü', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-üncü', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-inci', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ncı', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-nci', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-inci', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-uncu', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-nci', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-inci', '21th');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-nci', '22th');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-üncü', '23th');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-üncü', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-inci', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ncı', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-nci', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-inci', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-uncu', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-uncu', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-inci', '31st');
- });
- test('format month', function (assert) {
- var expected = 'yanvar yan_fevral fev_mart mar_aprel apr_may may_iyun iyn_iyul iyl_avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Bazar Baz Bz_Bazar ertəsi BzE BE_Çərşənbə axşamı ÇAx ÇA_Çərşənbə Çər Çə_Cümə axşamı CAx CA_Cümə Cüm Cü_Şənbə Şən Şə'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'birneçə saniyyə', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dəqiqə', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dəqiqə', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dəqiqə', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dəqiqə', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'bir saat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'bir saat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 saat', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 saat', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 saat', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'bir gün', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'bir gün', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 gün', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'bir gün', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 gün', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 gün', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'bir ay', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'bir ay', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ay', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ay', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ay', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'bir ay', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ay', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bir il', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 il', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir il', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 il', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'birneçə saniyyə sonra', 'prefix');
- assert.equal(moment(0).from(30000), 'birneçə saniyyə əvvəl', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'birneçə saniyyə əvvəl', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'birneçə saniyyə sonra', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'bugün saat 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'bugün saat 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'bugün saat 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'sabah saat 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'bugün saat 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'dünən 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-inci', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-inci', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-nci', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-nci', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-üncü', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('be');
- test('parse', function (assert) {
- var tests = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'нядзеля, 14-га лютага 2010, 15:25:50'],
- ['ddd, h A', 'нд, 3 дня'],
- ['M Mo MM MMMM MMM', '2 2-і 02 люты лют'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-га 14'],
- ['d do dddd ddd dd', '0 0-ы нядзеля нд нд'],
- ['DDD DDDo DDDD', '45 45-ы 045'],
- ['w wo ww', '7 7-ы 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'дня дня'],
- ['DDDo [дзень года]', '45-ы дзень года'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 лютага 2010 г.'],
- ['LLL', '14 лютага 2010 г., 15:25'],
- ['LLLL', 'нядзеля, 14 лютага 2010 г., 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 лют 2010 г.'],
- ['lll', '14 лют 2010 г., 15:25'],
- ['llll', 'нд, 14 лют 2010 г., 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format meridiem', function (assert) {
- assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночы', 'night');
- assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночы', 'night');
- assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'раніцы', 'morning');
- assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'раніцы', 'morning');
- assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon');
- assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon');
- assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечара', 'evening');
- assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечара', 'evening');
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ы', '1-ы');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-і', '2-і');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-і', '3-і');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ы', '4-ы');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ы', '5-ы');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ы', '6-ы');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ы', '7-ы');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ы', '8-ы');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ы', '9-ы');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ы', '10-ы');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ы', '11-ы');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ы', '12-ы');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ы', '13-ы');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ы', '14-ы');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ы', '15-ы');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ы', '16-ы');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ы', '17-ы');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ы', '18-ы');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ы', '19-ы');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ы', '20-ы');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ы', '21-ы');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-і', '22-і');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-і', '23-і');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ы', '24-ы');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ы', '25-ы');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ы', '26-ы');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ы', '27-ы');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ы', '28-ы');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ы', '29-ы');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ы', '30-ы');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ы', '31-ы');
- });
- test('format month', function (assert) {
- var expected = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format month case', function (assert) {
- var months = {
- 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'),
- 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
- }
- });
- test('format month case with escaped symbols', function (assert) {
- var months = {
- 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'),
- 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>');
- assert.equal(moment([2013, i, 1]).format('D[-ы дзень] MMMM'), '1-ы дзень ' + months.accusative[i], '1-ы дзень ' + months.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'нядзеля нд нд_панядзелак пн пн_аўторак ат ат_серада ср ср_чацвер чц чц_пятніца пт пт_субота сб сб'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'некалькі секунд', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'хвіліна', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'хвіліна', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 хвіліны', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), '31 хвіліна', '31 minutes = 31 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 хвіліны', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'гадзіна', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'гадзіна', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 гадзіны', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 гадзін', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 гадзіна', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'дзень', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'дзень', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дні', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'дзень', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дзён', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 дзён', '11 days = 11 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 дзень', '21 days = 21 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дзён', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месяц', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месяц', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месяц', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месяцы', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месяцы', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месяцы', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месяц', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месяцаў', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'год', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 гады', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'год', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 гадоў', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'праз некалькі секунд', 'prefix');
- assert.equal(moment(0).from(30000), 'некалькі секунд таму', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'праз некалькі секунд', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'праз 5 дзён', 'in 5 days');
- assert.equal(moment().add({m: 31}).fromNow(), 'праз 31 хвіліну', 'in 31 minutes = in 31 minutes');
- assert.equal(moment().subtract({m: 31}).fromNow(), '31 хвіліну таму', '31 minutes ago = 31 minutes ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Сёння ў 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Сёння ў 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Сёння ў 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Заўтра ў 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сёння ў 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Учора ў 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- return '[У] dddd [ў] LT';
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- case 3:
- case 5:
- case 6:
- return '[У мінулую] dddd [ў] LT';
- case 1:
- case 2:
- case 4:
- return '[У мінулы] dddd [ў] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ы', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ы', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-і', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-і', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-і', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('bg');
- test('parse', function (assert) {
- var tests = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, H:mm:ss', 'неделя, февруари 14-ти 2010, 15:25:50'],
- ['ddd, hA', 'нед, 3PM'],
- ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-ти 14'],
- ['d do dddd ddd dd', '0 0-ев неделя нед нд'],
- ['DDD DDDo DDDD', '45 45-ти 045'],
- ['w wo ww', '7 7-ми 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45-ти day of the year'],
- ['LT', '15:25'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 февруари 2010'],
- ['LLL', '14 февруари 2010 15:25'],
- ['LLLL', 'неделя, 14 февруари 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 фев 2010'],
- ['lll', '14 фев 2010 15:25'],
- ['llll', 'нед, 14 фев 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви');
- });
- test('format month', function (assert) {
- var expected = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'няколко секунди', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минути', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минути', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часа', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 часа', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ден', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ден', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дни', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ден', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дни', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дни', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеца', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеца', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеца', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеца', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'година', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 години', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'година', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 години', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'след няколко секунди', 'prefix');
- assert.equal(moment(0).from(30000), 'преди няколко секунди', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'преди няколко секунди', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'след няколко секунди', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'след 5 дни', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Днес в 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Днес в 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Днес в 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Утре в 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Днес в 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера в 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- case 3:
- case 6:
- return '[В изминалата] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[В изминалия] dddd [в] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('bn');
- test('parse', function (assert) {
- var tests = 'জানুয়ারী জানু_ফেব্রুয়ারি ফেব_মার্চ মার্চ_এপ্রিল এপ্র_মে মে_জুন জুন_জুলাই জুল_আগস্ট আগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss সময়', 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫:৫০ সময়'],
- ['ddd, a h সময়', 'রবি, দুপুর ৩ সময়'],
- ['M Mo MM MMMM MMM', '২ ২ ০২ ফেব্রুয়ারি ফেব'],
- ['YYYY YY', '২০১০ ১০'],
- ['D Do DD', '১৪ ১৪ ১৪'],
- ['d do dddd ddd dd', '০ ০ রবিবার রবি রবি'],
- ['DDD DDDo DDDD', '৪৫ ৪৫ ০৪৫'],
- ['w wo ww', '৮ ৮ ০৮'],
- ['h hh', '৩ ০৩'],
- ['H HH', '১৫ ১৫'],
- ['m mm', '২৫ ২৫'],
- ['s ss', '৫০ ৫০'],
- ['a A', 'দুপুর দুপুর'],
- ['LT', 'দুপুর ৩:২৫ সময়'],
- ['LTS', 'দুপুর ৩:২৫:৫০ সময়'],
- ['L', '১৪/০২/২০১০'],
- ['LL', '১৪ ফেব্রুয়ারি ২০১০'],
- ['LLL', '১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫ সময়'],
- ['LLLL', 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫ সময়'],
- ['l', '১৪/২/২০১০'],
- ['ll', '১৪ ফেব ২০১০'],
- ['lll', '১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়'],
- ['llll', 'রবি, ১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '১', '১');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '২', '২');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '৩', '৩');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '৪', '৪');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '৫', '৫');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '৬', '৬');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '৭', '৭');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '৮', '৮');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '৯', '৯');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '১০', '১০');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '১১', '১১');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '১২', '১২');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '১৩', '১৩');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '১৪', '১৪');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '১৫', '১৫');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '১৬', '১৬');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '১৭', '১৭');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '১৮', '১৮');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '১৯', '১৯');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '২০', '২০');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '২১', '২১');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '২২', '২২');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '২৩', '২৩');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '২৪', '২৪');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '২৫', '২৫');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '২৬', '২৬');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '২৭', '২৭');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '২৮', '२৮');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '২৯', '২৯');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '৩০', '৩০');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '৩১', '৩১');
- });
- test('format month', function (assert) {
- var expected = 'জানুয়ারী জানু_ফেব্রুয়ারি ফেব_মার্চ মার্চ_এপ্রিল এপ্র_মে মে_জুন জুন_জুলাই জুল_আগস্ট আগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'রবিবার রবি রবি_সোমবার সোম সোম_মঙ্গলবার মঙ্গল মঙ্গ_বুধবার বুধ বুধ_বৃহস্পতিবার বৃহস্পতি বৃহঃ_শুক্রবার শুক্র শুক্র_শনিবার শনি শনি'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'কয়েক সেকেন্ড', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'এক মিনিট', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'এক মিনিট', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '২ মিনিট', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '৪৪ মিনিট', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'এক ঘন্টা', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'এক ঘন্টা', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '২ ঘন্টা', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '৫ ঘন্টা', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '২১ ঘন্টা', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'এক দিন', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'এক দিন', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '২ দিন', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'এক দিন', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '৫ দিন', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '২৫ দিন', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'এক মাস', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'এক মাস', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '২ মাস', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '২ মাস', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '৩ মাস', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'এক মাস', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '৫ মাস', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'এক বছর', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '২ বছর', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'এক বছর', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '৫ বছর', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'কয়েক সেকেন্ড পরে', 'prefix');
- assert.equal(moment(0).from(30000), 'কয়েক সেকেন্ড আগে', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'কয়েক সেকেন্ড আগে', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'কয়েক সেকেন্ড পরে', 'কয়েক সেকেন্ড পরে');
- assert.equal(moment().add({d: 5}).fromNow(), '৫ দিন পরে', '৫ দিন পরে');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'আজ দুপুর ১২:০০ সময়', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'আজ দুপুর ১২:২৫ সময়', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'আজ দুপুর ৩:০০ সময়', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'আগামীকাল দুপুর ১২:০০ সময়', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'আজ দুপুর ১১:০০ সময়', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'গতকাল দুপুর ১২:০০ সময়', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'রাত', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'সকাল', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'দুপুর', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'বিকাল', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'বিকাল', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'রাত', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'রাত', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'সকাল', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'দুপুর', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'বিকাল', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'বিকাল', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'রাত', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '১ ০১ ১', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '১ ০১ ১', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '২ ০২ ২', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '২ ০২ ২', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '৩ ০৩ ৩', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('bo');
- test('parse', function (assert) {
- var tests = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ._ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss ལ་', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥:༥༠ ལ་'],
- ['ddd, a h ལ་', 'ཉི་མ་, ཉིན་གུང ༣ ལ་'],
- ['M Mo MM MMMM MMM', '༢ ༢ ༠༢ ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ'],
- ['YYYY YY', '༢༠༡༠ ༡༠'],
- ['D Do DD', '༡༤ ༡༤ ༡༤'],
- ['d do dddd ddd dd', '༠ ༠ གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་'],
- ['DDD DDDo DDDD', '༤༥ ༤༥ ༠༤༥'],
- ['w wo ww', '༨ ༨ ༠༨'],
- ['h hh', '༣ ༠༣'],
- ['H HH', '༡༥ ༡༥'],
- ['m mm', '༢༥ ༢༥'],
- ['s ss', '༥༠ ༥༠'],
- ['a A', 'ཉིན་གུང ཉིན་གུང'],
- ['LT', 'ཉིན་གུང ༣:༢༥'],
- ['LTS', 'ཉིན་གུང ༣:༢༥:༥༠'],
- ['L', '༡༤/༠༢/༢༠༡༠'],
- ['LL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'],
- ['LLL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'],
- ['LLLL', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'],
- ['l', '༡༤/༢/༢༠༡༠'],
- ['ll', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'],
- ['lll', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'],
- ['llll', 'ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '༡', '༡');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '༢', '༢');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '༣', '༣');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '༤', '༤');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '༥', '༥');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '༦', '༦');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '༧', '༧');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '༨', '༨');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '༩', '༩');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '༡༠', '༡༠');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '༡༡', '༡༡');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '༡༢', '༡༢');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '༡༣', '༡༣');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '༡༤', '༡༤');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '༡༥', '༡༥');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '༡༦', '༡༦');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '༡༧', '༡༧');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '༡༨', '༡༨');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '༡༩', '༡༩');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '༢༠', '༢༠');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '༢༡', '༢༡');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '༢༢', '༢༢');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '༢༣', '༢༣');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '༢༤', '༢༤');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '༢༥', '༢༥');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '༢༦', '༢༦');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '༢༧', '༢༧');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '༢༨', '༢༨');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '༢༩', '༢༩');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '༣༠', '༣༠');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '༣༡', '༣༡');
- });
- test('format month', function (assert) {
- var expected = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ་བ་_གཟའ་མིག་དམར་ མིག་དམར་ མིག་དམར་_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག་པ་_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར་བུ_གཟའ་པ་སངས་ པ་སངས་ པ་སངས་_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན་པ་'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ལམ་སང', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'སྐར་མ་གཅིག', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'སྐར་མ་གཅིག', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '༢ སྐར་མ', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '༤༤ སྐར་མ', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ཆུ་ཚོད་གཅིག', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ཆུ་ཚོད་གཅིག', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '༢ ཆུ་ཚོད', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '༥ ཆུ་ཚོད', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '༢༡ ཆུ་ཚོད', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ཉིན་གཅིག', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ཉིན་གཅིག', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '༢ ཉིན་', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ཉིན་གཅིག', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '༥ ཉིན་', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '༢༥ ཉིན་', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ཟླ་བ་གཅིག', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ཟླ་བ་གཅིག', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ཟླ་བ་གཅིག', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '༢ ཟླ་བ', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '༢ ཟླ་བ', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '༣ ཟླ་བ', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ཟླ་བ་གཅིག', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '༥ ཟླ་བ', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ལོ་གཅིག', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '༢ ལོ', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ལོ་གཅིག', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '༥ ལོ', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ལམ་སང ལ་', 'prefix');
- assert.equal(moment(0).from(30000), 'ལམ་སང སྔན་ལ', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ལམ་སང སྔན་ལ', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ལམ་སང ལ་', 'ལམ་སང ལ་');
- assert.equal(moment().add({d: 5}).fromNow(), '༥ ཉིན་ ལ་', '༥ ཉིན་ ལ་');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'དི་རིང ཉིན་གུང ༡༢:༠༠', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'དི་རིང ཉིན་གུང ༡༢:༢༥', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'དི་རིང ཉིན་གུང ༣:༠༠', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'སང་ཉིན ཉིན་གུང ༡༢:༠༠', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'དི་རིང ཉིན་གུང ༡༡:༠༠', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ཁ་སང ཉིན་གུང ༡༢:༠༠', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'མཚན་མོ', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'ཞོགས་ཀས', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ཉིན་གུང', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'དགོང་དག', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'དགོང་དག', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'མཚན་མོ', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'མཚན་མོ', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'ཞོགས་ཀས', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ཉིན་གུང', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'དགོང་དག', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'དགོང་དག', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'མཚན་མོ', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '༡ ༠༡ ༡', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '༡ ༠༡ ༡', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '༢ ༠༢ ༢', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '༢ ༠༢ ༢', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '༣ ༠༣ ༣', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('br');
- test('parse', function (assert) {
- var tests = 'Genver Gen_C\'hwevrer C\'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- moment.locale('br');
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sul, C\'hwevrer 14vet 2010, 3:25:50 pm'],
- ['ddd, h A', 'Sul, 3 PM'],
- ['M Mo MM MMMM MMM', '2 2vet 02 C\'hwevrer C\'hwe'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14vet 14'],
- ['d do dddd ddd dd', '0 0vet Sul Sul Su'],
- ['DDD DDDo DDDD', '45 45vet 045'],
- ['w wo ww', '6 6vet 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'],
- ['L', '14/02/2010'],
- ['LL', '14 a viz C\'hwevrer 2010'],
- ['LLL', '14 a viz C\'hwevrer 2010 3e25 PM'],
- ['LLLL', 'Sul, 14 a viz C\'hwevrer 2010 3e25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- moment.locale('br');
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet');
- });
- test('format month', function (assert) {
- moment.locale('br');
- var expected = 'Genver Gen_C\'hwevrer C\'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- moment.locale('br');
- var expected = 'Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc\'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- moment.locale('br');
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'un nebeud segondennoù', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ur vunutenn', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ur vunutenn', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 vunutenn', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munutenn', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un eur', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un eur', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 eur', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 eur', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 eur', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un devezh', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un devezh', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zevezh', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un devezh', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 devezh', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 devezh', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ur miz', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ur miz', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ur miz', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 viz', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 viz', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miz', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ur miz', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miz', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ur bloaz', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vloaz', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bloaz', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- moment.locale('br');
- assert.equal(moment(30000).from(0), 'a-benn un nebeud segondennoù', 'prefix');
- assert.equal(moment(0).from(30000), 'un nebeud segondennoù \'zo', 'suffix');
- });
- test('now from now', function (assert) {
- moment.locale('br');
- assert.equal(moment().fromNow(), 'un nebeud segondennoù \'zo', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- moment.locale('br');
- assert.equal(moment().add({s: 30}).fromNow(), 'a-benn un nebeud segondennoù', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'a-benn 5 devezh', 'in 5 days');
- });
- test('calendar day', function (assert) {
- moment.locale('br');
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hiziv da 12e00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hiziv da 12e25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hiziv da 1e00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Warc\'hoazh da 12e00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hiziv da 11e00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dec\'h da 12e00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- moment.locale('br');
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- moment.locale('br');
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- moment.locale('br');
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('special mutations for years', function (assert) {
- moment.locale('br');
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', 'mutation 1 year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 vloaz', 'mutation 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 bloaz', 'mutation 3 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 bloaz', 'mutation 4 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bloaz', 'mutation 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 9}), true), '9 bloaz', 'mutation 9 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 10}), true), '10 vloaz', 'mutation 10 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 bloaz', 'mutation 21 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 22}), true), '22 vloaz', 'mutation 22 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 133}), true), '133 bloaz', 'mutation 133 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 148}), true), '148 vloaz', 'mutation 148 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 261}), true), '261 bloaz', 'mutation 261 years');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('bs');
- test('parse', function (assert) {
- var tests = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' inp ' + mmm);
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'],
- ['ddd, hA', 'ned., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. nedjelja ned. ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 15:25'],
- ['LLLL', 'nedjelja, 14. februar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb. 2010'],
- ['lll', '14. feb. 2010 15:25'],
- ['llll', 'ned., 14. feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'par sekundi', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedna minuta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedna minuta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix');
- assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'prije par sekundi', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za par sekundi', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'danas u 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'jučer u 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[u] dddd [u] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- case 3:
- return '[prošlu] dddd [u] LT';
- case 6:
- return '[prošle] [subote] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[prošli] dddd [u] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ca');
- test('parse', function (assert) {
- var tests = 'gener gen._febrer febr._març març_abril abr._maig maig_juny juny_juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'diumenge, 14è de febrer 2010, 3:25:50 pm'],
- ['ddd, hA', 'dg., 3PM'],
- ['M Mo MM MMMM MMM', '2 2n 02 febrer febr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14è 14'],
- ['d do dddd ddd dd', '0 0è diumenge dg. Dg'],
- ['DDD DDDo DDDD', '45 45è 045'],
- ['w wo ww', '6 6a 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45è day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', 'el 14 de febrer de 2010'],
- ['LLL', 'el 14 de febrer de 2010 a les 15:25'],
- ['LLLL', 'el diumenge 14 de febrer de 2010 a les 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 febr. 2010'],
- ['lll', '14 febr. 2010, 15:25'],
- ['llll', 'dg. 14 febr. 2010, 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1r', '1r');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2n', '2n');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3r', '3r');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4t', '4t');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5è', '5è');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6è', '6è');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7è', '7è');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8è', '8è');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9è', '9è');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10è', '10è');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11è', '11è');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12è', '12è');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13è', '13è');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14è', '14è');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15è', '15è');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16è', '16è');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17è', '17è');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18è', '18è');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19è', '19è');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20è', '20è');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21è', '21è');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22è', '22è');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23è', '23è');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24è', '24è');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25è', '25è');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26è', '26è');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27è', '27è');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28è', '28è');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29è', '29è');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30è', '30è');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31è', '31è');
- });
- test('format month', function (assert) {
- var expected = 'gener gen._febrer febr._març març_abril abr._maig maig_juny juny_juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'diumenge dg. Dg_dilluns dl. Dl_dimarts dt. Dt_dimecres dc. Dc_dijous dj. Dj_divendres dv. Dv_dissabte ds. Ds'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'uns segons', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuts', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuts', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hores', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hores', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hores', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un dia', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un dia', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dies', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un dia', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dies', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dies', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesos', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesos', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesos', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesos', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un any', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anys', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un any', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anys', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'd\'aquí uns segons', 'prefix');
- assert.equal(moment(0).from(30000), 'fa uns segons', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'fa uns segons', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'd\'aquí uns segons', 'd\'aquí uns segons');
- assert.equal(moment().add({d: 5}).fromNow(), 'd\'aquí 5 dies', 'd\'aquí 5 dies');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'avui a les 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'avui a les 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'avui a les 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'demà a les 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'demà a les 11:00', 'tomorrow minus 1 hour');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'avui a les 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ahir a les 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', 'Jan 15 2012 should be week 2');
- });
- test('day and month', function (assert) {
- assert.equal(moment([2012, 1, 15]).format('D MMMM'), '15 de febrer');
- assert.equal(moment([2012, 9, 15]).format('D MMMM'), '15 d\'octubre');
- assert.equal(moment([2012, 9, 15]).format('MMMM, D'), 'octubre, 15');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('cs');
- test('parse', function (assert) {
- var tests = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split('_'), i;
- function equalTest(input, mmm, monthIndex) {
- assert.equal(moment(input, mmm).month(), monthIndex, input + ' ' + mmm + ' should be month ' + (monthIndex + 1));
- }
- function equalTestStrict(input, mmm, monthIndex) {
- assert.equal(moment(input, mmm, true).month(), monthIndex, input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- equalTestStrict(tests[i][1], 'MMM', i);
- equalTestStrict(tests[i][0], 'MMMM', i);
- equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i);
- equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i);
- equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 2010, 3:25:50'],
- ['ddd, h', 'ne, 3'],
- ['M Mo MM MMMM MMM', '2 2. 02 únor úno'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. neděle ne ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['DDDo [den v roce]', '45. den v roce'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. únor 2010'],
- ['LLL', '14. únor 2010 15:25'],
- ['LLLL', 'neděle 14. únor 2010 15:25'],
- ['l', '14. 2. 2010'],
- ['ll', '14. úno 2010'],
- ['lll', '14. úno 2010 15:25'],
- ['llll', 'ne 14. úno 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'pár sekund', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuty', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'hodina', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'hodina', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hodiny', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodin', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodin', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'den', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'den', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dny', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'den', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'měsíc', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'měsíc', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'měsíc', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 měsíce', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 měsíce', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 měsíce', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'měsíc', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 měsíců', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 roky', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za pár sekund', 'prefix');
- assert.equal(moment(0).from(30000), 'před pár sekundami', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'před pár sekundami', 'now from now should display as in the past');
- });
- test('fromNow (future)', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekund', 'in a few seconds');
- assert.equal(moment().add({m: 1}).fromNow(), 'za minutu', 'in a minute');
- assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minuty', 'in 3 minutes');
- assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minut', 'in 10 minutes');
- assert.equal(moment().add({h: 1}).fromNow(), 'za hodinu', 'in an hour');
- assert.equal(moment().add({h: 3}).fromNow(), 'za 3 hodiny', 'in 3 hours');
- assert.equal(moment().add({h: 10}).fromNow(), 'za 10 hodin', 'in 10 hours');
- assert.equal(moment().add({d: 1}).fromNow(), 'za den', 'in a day');
- assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dny', 'in 3 days');
- assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days');
- assert.equal(moment().add({M: 1}).fromNow(), 'za měsíc', 'in a month');
- assert.equal(moment().add({M: 3}).fromNow(), 'za 3 měsíce', 'in 3 months');
- assert.equal(moment().add({M: 10}).fromNow(), 'za 10 měsíců', 'in 10 months');
- assert.equal(moment().add({y: 1}).fromNow(), 'za rok', 'in a year');
- assert.equal(moment().add({y: 3}).fromNow(), 'za 3 roky', 'in 3 years');
- assert.equal(moment().add({y: 10}).fromNow(), 'za 10 let', 'in 10 years');
- });
- test('fromNow (past)', function (assert) {
- assert.equal(moment().subtract({s: 30}).fromNow(), 'před pár sekundami', 'a few seconds ago');
- assert.equal(moment().subtract({m: 1}).fromNow(), 'před minutou', 'a minute ago');
- assert.equal(moment().subtract({m: 3}).fromNow(), 'před 3 minutami', '3 minutes ago');
- assert.equal(moment().subtract({m: 10}).fromNow(), 'před 10 minutami', '10 minutes ago');
- assert.equal(moment().subtract({h: 1}).fromNow(), 'před hodinou', 'an hour ago');
- assert.equal(moment().subtract({h: 3}).fromNow(), 'před 3 hodinami', '3 hours ago');
- assert.equal(moment().subtract({h: 10}).fromNow(), 'před 10 hodinami', '10 hours ago');
- assert.equal(moment().subtract({d: 1}).fromNow(), 'před dnem', 'a day ago');
- assert.equal(moment().subtract({d: 3}).fromNow(), 'před 3 dny', '3 days ago');
- assert.equal(moment().subtract({d: 10}).fromNow(), 'před 10 dny', '10 days ago');
- assert.equal(moment().subtract({M: 1}).fromNow(), 'před měsícem', 'a month ago');
- assert.equal(moment().subtract({M: 3}).fromNow(), 'před 3 měsíci', '3 months ago');
- assert.equal(moment().subtract({M: 10}).fromNow(), 'před 10 měsíci', '10 months ago');
- assert.equal(moment().subtract({y: 1}).fromNow(), 'před rokem', 'a year ago');
- assert.equal(moment().subtract({y: 3}).fromNow(), 'před 3 lety', '3 years ago');
- assert.equal(moment().subtract({y: 10}).fromNow(), 'před 10 lety', '10 years ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'dnes v 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'dnes v 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'dnes v 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'zítra v 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes v 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera v 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m, nextDay;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- nextDay = '';
- switch (m.day()) {
- case 0:
- nextDay = 'v neděli';
- break;
- case 1:
- nextDay = 'v pondělí';
- break;
- case 2:
- nextDay = 'v úterý';
- break;
- case 3:
- nextDay = 've středu';
- break;
- case 4:
- nextDay = 've čtvrtek';
- break;
- case 5:
- nextDay = 'v pátek';
- break;
- case 6:
- nextDay = 'v sobotu';
- break;
- }
- assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, lastDay;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- lastDay = '';
- switch (m.day()) {
- case 0:
- lastDay = 'minulou neděli';
- break;
- case 1:
- lastDay = 'minulé pondělí';
- break;
- case 2:
- lastDay = 'minulé úterý';
- break;
- case 3:
- lastDay = 'minulou středu';
- break;
- case 4:
- lastDay = 'minulý čtvrtek';
- break;
- case 5:
- lastDay = 'minulý pátek';
- break;
- case 6:
- lastDay = 'minulou sobotu';
- break;
- }
- assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('humanize duration', function (assert) {
- assert.equal(moment.duration(1, 'minutes').humanize(), 'minuta', 'a minute (future)');
- assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minutu', 'in a minute');
- assert.equal(moment.duration(-1, 'minutes').humanize(), 'minuta', 'a minute (past)');
- assert.equal(moment.duration(-1, 'minutes').humanize(true), 'před minutou', 'a minute ago');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('cv');
- test('parse', function (assert) {
- var tests = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарӑс 14-мӗш 2010, 3:25:50 pm'],
- ['ddd, hA', 'выр, 3PM'],
- ['M Mo MM MMMM MMM', '2 2-мӗш 02 нарӑс нар'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-мӗш 14'],
- ['d do dddd ddd dd', '0 0-мӗш вырсарникун выр вр'],
- ['DDD DDDo DDDD', '45 45-мӗш 045'],
- ['w wo ww', '7 7-мӗш 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['Ҫулӑн DDDo кунӗ', 'Ҫулӑн 45-мӗш кунӗ'],
- ['LTS', '15:25:50'],
- ['L', '14-02-2010'],
- ['LL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ'],
- ['LLL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'],
- ['LLLL', 'вырсарникун, 2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'],
- ['l', '14-2-2010'],
- ['ll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ'],
- ['lll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'],
- ['llll', 'выр, 2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мӗш', '1-мӗш');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мӗш', '2-мӗш');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мӗш', '3-мӗш');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мӗш', '4-мӗш');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мӗш', '5-мӗш');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мӗш', '6-мӗш');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мӗш', '7-мӗш');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мӗш', '8-мӗш');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мӗш', '9-мӗш');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мӗш', '10-мӗш');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мӗш', '11-мӗш');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мӗш', '12-мӗш');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мӗш', '13-мӗш');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мӗш', '14-мӗш');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мӗш', '15-мӗш');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мӗш', '16-мӗш');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мӗш', '17-мӗш');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мӗш', '18-мӗш');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мӗш', '19-мӗш');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мӗш', '20-мӗш');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мӗш', '21-мӗш');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мӗш', '22-мӗш');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мӗш', '23-мӗш');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мӗш', '24-мӗш');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мӗш', '25-мӗш');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мӗш', '26-мӗш');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мӗш', '27-мӗш');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мӗш', '28-мӗш');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мӗш', '29-мӗш');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мӗш', '30-мӗш');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мӗш', '31-мӗш');
- });
- test('format month', function (assert) {
- var expected = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'пӗр-ик ҫеккунт', '44 sekunder = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'пӗр минут', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'пӗр минут', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минут', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минут', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'пӗр сехет', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'пӗр сехет', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сехет', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сехет', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сехет', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'пӗр кун', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'пӗр кун', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'пӗр кун', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'пӗр уйӑх', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'пӗр уйӑх', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'пӗр уйӑх', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 уйӑх', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 уйӑх', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 уйӑх', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'пӗр уйӑх', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 уйӑх', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'пӗр ҫул', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ҫул', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'пӗр ҫул', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ҫул', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'пӗр-ик ҫеккунтран', 'prefix');
- assert.equal(moment(0).from(30000), 'пӗр-ик ҫеккунт каялла', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'пӗр-ик ҫеккунт каялла', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'пӗр-ик ҫеккунтран', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 кунран', 'in 5 days');
- assert.equal(moment().add({h: 2}).fromNow(), '2 сехетрен', 'in 2 hours, the right suffix!');
- assert.equal(moment().add({y: 3}).fromNow(), '3 ҫултан', 'in 3 years, the right suffix!');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Паян 12:00 сехетре', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Паян 12:25 сехетре', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Паян 13:00 сехетре', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Ыран 12:00 сехетре', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Паян 11:00 сехетре', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ӗнер 12:00 сехетре', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- // Monday is the first day of the week.
- // The week that contains Jan 1st is the first week of the year.
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мӗш', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мӗш', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мӗш', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мӗш', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мӗш', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('cy');
- test('parse', function (assert) {
- var tests = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sul, 3PM'],
- ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14eg 14'],
- ['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'],
- ['DDD DDDo DDDD', '45 45ain 045'],
- ['w wo ww', '6 6ed 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45ain day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 Chwefror 2010'],
- ['LLL', '14 Chwefror 2010 15:25'],
- ['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Chwe 2010'],
- ['lll', '14 Chwe 2010 15:25'],
- ['llll', 'Sul, 14 Chwe 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain');
- });
- test('format month', function (assert) {
- var expected = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ychydig eiliadau', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'munud', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'munud', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 munud', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munud', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'awr', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'awr', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 awr', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 awr', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 awr', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diwrnod', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diwrnod', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 diwrnod', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diwrnod', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 diwrnod', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 diwrnod', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mis', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mis', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mis', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mis', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mis', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mis', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mis', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mis', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'blwyddyn', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 flynedd', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'blwyddyn', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 flynedd', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'mewn ychydig eiliadau', 'prefix');
- assert.equal(moment(0).from(30000), 'ychydig eiliadau yn ôl', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'mewn ychydig eiliadau', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'mewn 5 diwrnod', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Heddiw am 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Heddiw am 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Heddiw am 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Yfory am 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heddiw am 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ddoe am 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ain', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1af', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1af', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2il', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2il', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('da');
- test('parse', function (assert) {
- var tests = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd [den] Do MMMM YYYY, h:mm:ss a', 'søndag den 14. februar 2010, 3:25:50 pm'],
- ['ddd hA', 'søn 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. søndag søn sø'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[den] DDDo [dag på året]', 'den 45. dag på året'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 15:25'],
- ['LLLL', 'søndag d. 14. februar 2010 kl. 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14. feb 2010'],
- ['lll', '14. feb 2010 15:25'],
- ['llll', 'søn d. 14. feb 2010 kl. 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'få sekunder', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'et minut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'et minut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dage', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dage', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dage', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en måned', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en måned', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 måneder', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'et år', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'et år', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'om få sekunder', 'prefix');
- assert.equal(moment(0).from(30000), 'få sekunder siden', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'få sekunder siden', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'om få sekunder', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dage', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'i dag kl. 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'i dag kl. 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'i dag kl. 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'i morgen kl. 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'i dag kl. 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'i går kl. 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('på dddd [kl.] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('på dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('på dddd [kl.] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[i] dddd[s kl.] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[i] dddd[s kl.] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[i] dddd[s kl.] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('de-at');
- test('parse', function (assert) {
- var tests = 'Jänner Jän._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'],
- ['ddd, hA', 'So., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. Sonntag So. So'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. Februar 2010'],
- ['LLL', '14. Februar 2010 15:25'],
- ['LLLL', 'Sonntag, 14. Februar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. Febr. 2010'],
- ['lll', '14. Febr. 2010 15:25'],
- ['llll', 'So., 14. Febr. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'Jänner Jän._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix');
- assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'heute um 12:00 Uhr', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'heute um 12:25 Uhr', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'heute um 13:00 Uhr', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'morgen um 12:00 Uhr', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'heute um 11:00 Uhr', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'gestern um 12:00 Uhr', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('de-ch');
- test('parse', function (assert) {
- var tests = 'Januar Jan._Februar Febr._März März_April April_Mai Mai_Juni Juni_Juli Juli_August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h.mm.ss a', 'Sonntag, 14. Februar 2010, 3.25.50 pm'],
- ['ddd, hA', 'So, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. Sonntag So So'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15.25.50'],
- ['L', '14.02.2010'],
- ['LL', '14. Februar 2010'],
- ['LLL', '14. Februar 2010 15.25'],
- ['LLLL', 'Sonntag, 14. Februar 2010 15.25'],
- ['l', '14.2.2010'],
- ['ll', '14. Febr. 2010'],
- ['lll', '14. Febr. 2010 15.25'],
- ['llll', 'So, 14. Febr. 2010 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'Januar Jan._Februar Febr._März März_April April_Mai Mai_Juni Juni_Juli Juli_August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sonntag So So_Montag Mo Mo_Dienstag Di Di_Mittwoch Mi Mi_Donnerstag Do Do_Freitag Fr Fr_Samstag Sa Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein Monat', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix');
- assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'heute um 12.00 Uhr', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'heute um 12.25 Uhr', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'heute um 13.00 Uhr', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'morgen um 12.00 Uhr', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'heute um 11.00 Uhr', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'gestern um 12.00 Uhr', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('de');
- test('parse', function (assert) {
- var tests = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'],
- ['ddd, hA', 'So., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. Sonntag So. So'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. Februar 2010'],
- ['LLL', '14. Februar 2010 15:25'],
- ['LLLL', 'Sonntag, 14. Februar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. Febr. 2010'],
- ['lll', '14. Febr. 2010 15:25'],
- ['llll', 'So., 14. Febr. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein Monat', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix');
- assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'heute um 12:00 Uhr', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'heute um 12:25 Uhr', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'heute um 13:00 Uhr', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'morgen um 12:00 Uhr', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'heute um 11:00 Uhr', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'gestern um 12:00 Uhr', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('dv');
- test('parse', function (assert) {
- var i,
- tests = [
- 'ޖެނުއަރީ',
- 'ފެބްރުއަރީ',
- 'މާރިޗު',
- 'އޭޕްރީލު',
- 'މޭ',
- 'ޖޫން',
- 'ޖުލައި',
- 'އޯގަސްޓު',
- 'ސެޕްޓެމްބަރު',
- 'އޮކްޓޯބަރު',
- 'ނޮވެމްބަރު',
- 'ޑިސެމްބަރު'
- ];
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- equalTest(tests[i], 'MMM', i);
- equalTest(tests[i], 'MMMM', i);
- equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'އާދިއްތަ، ފެބްރުއަރީ 14 2010، 3:25:50 މފ'],
- ['ddd, hA', 'އާދިއްތަ، 3މފ'],
- ['M Mo MM MMMM MMM', '2 2 02 ފެބްރުއަރީ ފެބްރުއަރީ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 އާދިއްތަ އާދިއްތަ އާދި'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'މފ މފ'],
- ['LTS', '15:25:50'],
- ['L', '14/2/2010'],
- ['LL', '14 ފެބްރުއަރީ 2010'],
- ['LLL', '14 ފެބްރުއަރީ 2010 15:25'],
- ['LLLL', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 ފެބްރުއަރީ 2010'],
- ['lll', '14 ފެބްރުއަރީ 2010 15:25'],
- ['llll', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var i,
- expected = [
- 'ޖެނުއަރީ',
- 'ފެބްރުއަރީ',
- 'މާރިޗު',
- 'އޭޕްރީލު',
- 'މޭ',
- 'ޖޫން',
- 'ޖުލައި',
- 'އޯގަސްޓު',
- 'ސެޕްޓެމްބަރު',
- 'އޮކްޓޯބަރު',
- 'ނޮވެމްބަރު',
- 'ޑިސެމްބަރު'
- ];
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = [
- 'އާދިއްތަ',
- 'ހޯމަ',
- 'އަންގާރަ',
- 'ބުދަ',
- 'ބުރާސްފަތި',
- 'ހުކުރު',
- 'ހޮނިހިރު'
- ];
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd'), expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ސިކުންތުކޮޅެއް', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'މިނިޓެއް', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'މިނިޓެއް', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'މިނިޓު 2', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'މިނިޓު 44', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ގަޑިއިރެއް', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ގަޑިއިރެއް', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'ގަޑިއިރު 2', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'ގަޑިއިރު 5', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'ގަޑިއިރު 21', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ދުވަހެއް', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ދުވަހެއް', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'ދުވަސް 2', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ދުވަހެއް', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'ދުވަސް 5', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'ދުވަސް 25', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'މަހެއް', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'މަހެއް', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'މަހެއް', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'މަސް 2', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'މަސް 2', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'މަސް 3', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'މަހެއް', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'މަސް 5', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'އަހަރެއް', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'އަހަރު 2', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'އަހަރެއް', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'އަހަރު 5', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ތެރޭގައި ސިކުންތުކޮޅެއް', 'prefix');
- assert.equal(moment(0).from(30000), 'ކުރިން ސިކުންތުކޮޅެއް', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ތެރޭގައި ސިކުންތުކޮޅެއް', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'ތެރޭގައި ދުވަސް 5', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'މިއަދު 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'މިއަދު 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'މިއަދު 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'މާދަމާ 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'މިއަދު 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'އިއްޔެ 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ފާއިތުވި] dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ފާއިތުވި] dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ފާއިތުވި] dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('el');
- test('parse', function (assert) {
- var i,
- tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('parse meridiem', function (assert) {
- var i,
- b = moment(),
- meridiemTests = [
- // h a patterns, expected hours, isValid
- ['10 πμ', 10, true],
- ['10 μμ', 22, true],
- ['10 π.μ.', 10, true],
- ['10 μ.μ.', 22, true],
- ['10 π', 10, true],
- ['10 μ', 22, true],
- ['10 ΠΜ', 10, true],
- ['10 ΜΜ', 22, true],
- ['10 Π.Μ.', 10, true],
- ['10 Μ.Μ.', 22, true],
- ['10 Π', 10, true],
- ['10 Μ', 22, true],
- ['10 am', 10, false],
- ['10 pm', 10, false]
- ],
- parsed;
- // test that a formatted moment including meridiem string can be parsed back to the same moment
- assert.ok(b.isSame(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true), 'seconds'), b.format('h:mm:ss a') + ' should be equal to ' + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).format('h:mm:ss a'));
- // test that a formatted moment having a meridiem string can be parsed with strict flag
- assert.ok(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).isValid(), b.format('h:mm:ss a') + ' should be parsed as valid');
- for (i = 0; i < meridiemTests.length; i++) {
- parsed = moment(meridiemTests[i][0], 'h a', 'el', true);
- assert.equal(parsed.isValid(), meridiemTests[i][2], 'validity for ' + meridiemTests[i][0]);
- if (parsed.isValid()) {
- assert.equal(parsed.hours(), meridiemTests[i][1], 'hours for ' + meridiemTests[i][0]);
- }
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'],
- ['dddd, D MMMM YYYY, h:mm:ss a', 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ'],
- ['ddd, hA', 'Κυρ, 3ΜΜ'],
- ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'],
- ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14η 14'],
- ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'],
- ['DDD DDDo DDDD', '45 45η 045'],
- ['w wo ww', '6 6η 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'μμ ΜΜ'],
- ['[the] DDDo [day of the year]', 'the 45η day of the year'],
- ['LTS', '3:25:50 ΜΜ'],
- ['L', '14/02/2010'],
- ['LL', '14 Φεβρουαρίου 2010'],
- ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'],
- ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'],
- ['l', '14/2/2010'],
- ['ll', '14 Φεβ 2010'],
- ['lll', '14 Φεβ 2010 3:25 ΜΜ'],
- ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η');
- });
- test('format month', function (assert) {
- var i,
- expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'λίγα δευτερόλεπτα', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ένα λεπτό', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ένα λεπτό', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 λεπτά', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 λεπτά', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'μία ώρα', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'μία ώρα', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ώρες', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ώρες', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ώρες', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'μία μέρα', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'μία μέρα', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 μέρες', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'μία μέρα', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 μέρες', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 μέρες', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ένας μήνας', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ένας μήνας', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ένας μήνας', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 μήνες', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 μήνες', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 μήνες', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ένας μήνας', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 μήνες', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ένας χρόνος', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 χρόνια', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ένας χρόνος', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 χρόνια', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'σε λίγα δευτερόλεπτα', 'prefix');
- assert.equal(moment(0).from(30000), 'λίγα δευτερόλεπτα πριν', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'λίγα δευτερόλεπτα πριν', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'σε λίγα δευτερόλεπτα', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'σε 5 μέρες', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Σήμερα στις 12:00 ΜΜ', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Σήμερα στις 12:25 ΜΜ', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Σήμερα στη 1:00 ΜΜ', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Αύριο στις 12:00 ΜΜ', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Σήμερα στις 11:00 ΠΜ', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Χθες στις 12:00 ΜΜ', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, dayString;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- dayString = m.day() === 6 ? '[το προηγούμενο Σάββατο]' : '[την προηγούμενη] dddd';
- assert.equal(m.calendar(), m.format(dayString + ' [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), 'Today - ' + i + ' days current time');
- m.hours(1).minutes(30).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(dayString + ' [στη] LT'), 'Today - ' + i + ' days one o clock');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52η', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1η', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1η', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2η', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('en-au');
- test('parse', function (assert) {
- var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Sunday Sun Su'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '6 6th 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LTS', '3:25:50 PM'],
- ['L', '14/02/2010'],
- ['LL', '14 February 2010'],
- ['LLL', '14 February 2010 3:25 PM'],
- ['LLLL', 'Sunday, 14 February 2010 3:25 PM'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 3:25 PM'],
- ['llll', 'Sun, 14 Feb 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix');
- assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('en-ca');
- test('parse', function (assert) {
- var i,
- tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Sunday Sun Su'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '8 8th 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['L', '2010-02-14'],
- ['LTS', '3:25:50 PM'],
- ['LL', 'February 14, 2010'],
- ['LLL', 'February 14, 2010 3:25 PM'],
- ['LLLL', 'Sunday, February 14, 2010 3:25 PM'],
- ['l', '2010-2-14'],
- ['ll', 'Feb 14, 2010'],
- ['lll', 'Feb 14, 2010 3:25 PM'],
- ['llll', 'Sun, Feb 14, 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var i,
- expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix');
- assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('en-gb');
- test('parse', function (assert) {
- var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Sunday Sun Su'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '6 6th 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 February 2010'],
- ['LLL', '14 February 2010 15:25'],
- ['LLLL', 'Sunday, 14 February 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 15:25'],
- ['llll', 'Sun, 14 Feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix');
- assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('en-ie');
- test('parse', function (assert) {
- var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Sunday Sun Su'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '6 6th 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14-02-2010'],
- ['LL', '14 February 2010'],
- ['LLL', '14 February 2010 15:25'],
- ['LLLL', 'Sunday 14 February 2010 15:25'],
- ['l', '14-2-2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 15:25'],
- ['llll', 'Sun 14 Feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix');
- assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('en-nz');
- test('parse', function (assert) {
- var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Sunday Sun Su'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '6 6th 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LTS', '3:25:50 PM'],
- ['L', '14/02/2010'],
- ['LL', '14 February 2010'],
- ['LLL', '14 February 2010 3:25 PM'],
- ['LLLL', 'Sunday, 14 February 2010 3:25 PM'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 3:25 PM'],
- ['llll', 'Sun, 14 Feb 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix');
- assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('en');
- test('parse', function (assert) {
- var i,
- tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Sunday Sun Su'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '8 8th 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LTS', '3:25:50 PM'],
- ['L', '02/14/2010'],
- ['LL', 'February 14, 2010'],
- ['LLL', 'February 14, 2010 3:25 PM'],
- ['LLLL', 'Sunday, February 14, 2010 3:25 PM'],
- ['l', '2/14/2010'],
- ['ll', 'Feb 14, 2010'],
- ['lll', 'Feb 14, 2010 3:25 PM'],
- ['llll', 'Sun, Feb 14, 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var i,
- expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix');
- assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', 'Jan 15 2012 should be week 3');
- });
- test('weekdays strict parsing', function (assert) {
- var m = moment('2015-01-01T12', moment.ISO_8601, true),
- enLocale = moment.localeData('en');
- for (var i = 0; i < 7; ++i) {
- assert.equal(moment(enLocale.weekdays(m.day(i), ''), 'dddd', true).isValid(), true, 'parse weekday ' + i);
- assert.equal(moment(enLocale.weekdaysShort(m.day(i), ''), 'ddd', true).isValid(), true, 'parse short weekday ' + i);
- assert.equal(moment(enLocale.weekdaysMin(m.day(i), ''), 'dd', true).isValid(), true, 'parse min weekday ' + i);
- // negative tests
- assert.equal(moment(enLocale.weekdaysMin(m.day(i), ''), 'ddd', true).isValid(), false, 'parse short weekday ' + i);
- assert.equal(moment(enLocale.weekdaysShort(m.day(i), ''), 'dd', true).isValid(), false, 'parse min weekday ' + i);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('eo');
- test('parse', function (assert) {
- var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'],
- ['ddd, hA', 'dim, 3P.T.M.'],
- ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14a 14'],
- ['d do dddd ddd dd', '0 0a dimanĉo dim di'],
- ['DDD DDDo DDDD', '45 45a 045'],
- ['w wo ww', '7 7a 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'p.t.m. P.T.M.'],
- ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'],
- ['LTS', '15:25:50'],
- ['L', '2010-02-14'],
- ['LL', '14-a de februaro, 2010'],
- ['LLL', '14-a de februaro, 2010 15:25'],
- ['LLLL', 'dimanĉo, la 14-a de februaro, 2010 15:25'],
- ['l', '2010-2-14'],
- ['ll', '14-a de feb, 2010'],
- ['lll', '14-a de feb, 2010 15:25'],
- ['llll', 'dim, la 14-a de feb, 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a');
- });
- test('format month', function (assert) {
- var expected = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'dimanĉo dim di_lundo lun lu_mardo mard ma_merkredo merk me_ĵaŭdo ĵaŭ ĵa_vendredo ven ve_sabato sab sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sekundoj', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutoj', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutoj', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'horo', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'horo', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horoj', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horoj', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horoj', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'tago', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'tago', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 tagoj', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'tago', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 tagoj', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 tagoj', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'monato', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'monato', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'monato', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 monatoj', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 monatoj', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 monatoj', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'monato', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 monatoj', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'jaro', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaroj', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'jaro', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaroj', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'post sekundoj', 'post prefix');
- assert.equal(moment(0).from(30000), 'antaŭ sekundoj', 'antaŭ prefix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'antaŭ sekundoj', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'post sekundoj', 'post sekundoj');
- assert.equal(moment().add({d: 5}).fromNow(), 'post 5 tagoj', 'post 5 tagoj');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hodiaŭ je 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hodiaŭ je 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hodiaŭ je 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Morgaŭ je 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hodiaŭ je 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hieraŭ je 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1a', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1a', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2a', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3a', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('es-do');
- test('parse', function (assert) {
- var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febrero 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'dom., 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd dd', '0 0º domingo dom. do'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '6 6º 06'],
- ['YYYY-MMM-DD', '2010-feb-14'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '3:25:50 PM'],
- ['L', '14/02/2010'],
- ['LL', '14 de febrero de 2010'],
- ['LLL', '14 de febrero de 2010 3:25 PM'],
- ['LLLL', 'domingo, 14 de febrero de 2010 3:25 PM'],
- ['l', '14/2/2010'],
- ['ll', '14 de feb. de 2010'],
- ['lll', '14 de feb. de 2010 3:25 PM'],
- ['llll', 'dom., 14 de feb. de 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'domingo dom. do_lunes lun. lu_martes mar. ma_miércoles mié. mi_jueves jue. ju_viernes vie. vi_sábado sáb. sá'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'unos segundos', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix');
- assert.equal(moment(0).from(30000), 'hace unos segundos', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'hace unos segundos', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'en unos segundos', 'en unos segundos');
- assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'hoy a las 12:00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 12:25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 1:00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'mañana a las 12:00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañana a las 11:00 AM', 'tomorrow minus 1 hour');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoy a las 11:00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ayer a las 12:00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('es');
- test('parse', function (assert) {
- var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febrero 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'dom., 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd dd', '0 0º domingo dom. do'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '6 6º 06'],
- ['YYYY-MMM-DD', '2010-feb-14'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 de febrero de 2010'],
- ['LLL', '14 de febrero de 2010 15:25'],
- ['LLLL', 'domingo, 14 de febrero de 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 de feb. de 2010'],
- ['lll', '14 de feb. de 2010 15:25'],
- ['llll', 'dom., 14 de feb. de 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'domingo dom. do_lunes lun. lu_martes mar. ma_miércoles mié. mi_jueves jue. ju_viernes vie. vi_sábado sáb. sá'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'unos segundos', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix');
- assert.equal(moment(0).from(30000), 'hace unos segundos', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'hace unos segundos', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'en unos segundos', 'en unos segundos');
- assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'hoy a las 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'mañana a las 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañana a las 11:00', 'tomorrow minus 1 hour');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoy a las 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ayer a las 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('et');
- test('parse', function (assert) {
- var tests = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'],
- ['ddd, h', 'P, 3'],
- ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. pühapäev P P'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[aasta] DDDo [päev]', 'aasta 45. päev'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. veebruar 2010'],
- ['LLL', '14. veebruar 2010 15:25'],
- ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. veebr 2010'],
- ['lll', '14. veebr 2010 15:25'],
- ['llll', 'P, 14. veebr 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'paar sekundit', '44 seconds = paar sekundit');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'üks minut', '45 seconds = üks minut');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'üks minut', '89 seconds = üks minut');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutit', '90 seconds = 2 minutit');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutit', '44 minutes = 44 minutit');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'üks tund', '45 minutes = tund aega');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'üks tund', '89 minutes = üks tund');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tundi', '90 minutes = 2 tundi');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tundi', '5 hours = 5 tundi');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tundi', '21 hours = 21 tundi');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'üks päev', '22 hours = üks päev');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'üks päev', '35 hours = üks päev');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 päeva', '36 hours = 2 päeva');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'üks päev', '1 day = üks päev');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 päeva', '5 days = 5 päeva');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päeva', '25 days = 25 päeva');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'üks kuu', '26 days = üks kuu');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'üks kuu', '30 days = üks kuu');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'üks kuu', '43 days = üks kuu');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 kuud', '46 days = 2 kuud');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 kuud', '75 days = 2 kuud');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 kuud', '76 days = 3 kuud');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'üks kuu', '1 month = üks kuu');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 kuud', '5 months = 5 kuud');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'üks aasta', '345 days = üks aasta');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 aastat', '548 days = 2 aastat');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'üks aasta', '1 year = üks aasta');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 aastat', '5 years = 5 aastat');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'mõne sekundi pärast', 'prefix');
- assert.equal(moment(0).from(30000), 'mõni sekund tagasi', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'mõni sekund tagasi', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'mõne sekundi pärast', 'in a few seconds');
- assert.equal(moment().subtract({s: 30}).fromNow(), 'mõni sekund tagasi', 'a few seconds ago');
- assert.equal(moment().add({m: 1}).fromNow(), 'ühe minuti pärast', 'in a minute');
- assert.equal(moment().subtract({m: 1}).fromNow(), 'üks minut tagasi', 'a minute ago');
- assert.equal(moment().add({m: 5}).fromNow(), '5 minuti pärast', 'in 5 minutes');
- assert.equal(moment().subtract({m: 5}).fromNow(), '5 minutit tagasi', '5 minutes ago');
- assert.equal(moment().add({d: 1}).fromNow(), 'ühe päeva pärast', 'in one day');
- assert.equal(moment().subtract({d: 1}).fromNow(), 'üks päev tagasi', 'one day ago');
- assert.equal(moment().add({d: 5}).fromNow(), '5 päeva pärast', 'in 5 days');
- assert.equal(moment().subtract({d: 5}).fromNow(), '5 päeva tagasi', '5 days ago');
- assert.equal(moment().add({M: 1}).fromNow(), 'kuu aja pärast', 'in a month');
- assert.equal(moment().subtract({M: 1}).fromNow(), 'kuu aega tagasi', 'a month ago');
- assert.equal(moment().add({M: 5}).fromNow(), '5 kuu pärast', 'in 5 months');
- assert.equal(moment().subtract({M: 5}).fromNow(), '5 kuud tagasi', '5 months ago');
- assert.equal(moment().add({y: 1}).fromNow(), 'ühe aasta pärast', 'in a year');
- assert.equal(moment().subtract({y: 1}).fromNow(), 'aasta tagasi', 'a year ago');
- assert.equal(moment().add({y: 5}).fromNow(), '5 aasta pärast', 'in 5 years');
- assert.equal(moment().subtract({y: 5}).fromNow(), '5 aastat tagasi', '5 years ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Täna, 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Täna, 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Täna, 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Homme, 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Täna, 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Eile, 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 nädal tagasi');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 nädala pärast');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 nädala pärast');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('eu');
- test('parse', function (assert) {
- var tests = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'igandea, otsaila 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'ig., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. igandea ig. ig'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '2010-02-14'],
- ['LL', '2010ko otsailaren 14a'],
- ['LLL', '2010ko otsailaren 14a 15:25'],
- ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'],
- ['l', '2010-2-14'],
- ['ll', '2010ko ots. 14a'],
- ['lll', '2010ko ots. 14a 15:25'],
- ['llll', 'ig., 2010ko ots. 14a 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'segundo batzuk', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutu bat', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutu bat', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutu', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutu', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ordu bat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ordu bat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ordu', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ordu', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ordu', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'egun bat', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'egun bat', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 egun', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'egun bat', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 egun', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 egun', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'hilabete bat', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'hilabete bat', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'hilabete bat', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 hilabete', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 hilabete', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 hilabete', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'hilabete bat', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 hilabete', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'urte bat', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 urte', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'urte bat', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 urte', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'segundo batzuk barru', 'prefix');
- assert.equal(moment(0).from(30000), 'duela segundo batzuk', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'duela segundo batzuk', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'segundo batzuk barru', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 egun barru', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'gaur 12:00etan', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'gaur 12:25etan', 'now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'gaur 13:00etan', 'now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'bihar 12:00etan', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'gaur 11:00etan', 'now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'atzo 12:00etan', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fa');
- test('parse', function (assert) {
- var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month());
- }
- for (i = 0; i < 12; i++) {
- equalTest(tests[i], 'MMM', i);
- equalTest(tests[i], 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'],
- ['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'],
- ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'],
- ['YYYY YY', '۲۰۱۰ ۱۰'],
- ['D Do DD', '۱۴ ۱۴م ۱۴'],
- ['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'],
- ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'],
- ['w wo ww', '۸ ۸م ۰۸'],
- ['h hh', '۳ ۰۳'],
- ['H HH', '۱۵ ۱۵'],
- ['m mm', '۲۵ ۲۵'],
- ['s ss', '۵۰ ۵۰'],
- ['a A', 'بعد از ظهر بعد از ظهر'],
- ['DDDo [روز سال]', '۴۵م روز سال'],
- ['LTS', '۱۵:۲۵:۵۰'],
- ['L', '۱۴/۰۲/۲۰۱۰'],
- ['LL', '۱۴ فوریه ۲۰۱۰'],
- ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'],
- ['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'],
- ['l', '۱۴/۲/۲۰۱۰'],
- ['ll', '۱۴ فوریه ۲۰۱۰'],
- ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'],
- ['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31');
- });
- test('format month', function (assert) {
- var expected = 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'چند ثانیه', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'یک دقیقه', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'یک دقیقه', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '۲ دقیقه', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '۴۴ دقیقه', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'یک ساعت', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'یک ساعت', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '۲ ساعت', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '۵ ساعت', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '۲۱ ساعت', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'یک روز', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'یک روز', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '۲ روز', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'یک روز', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '۵ روز', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '۲۵ روز', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'یک ماه', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'یک ماه', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'یک ماه', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '۲ ماه', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '۲ ماه', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '۳ ماه', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'یک ماه', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '۵ ماه', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'یک سال', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '۲ سال', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'یک سال', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '۵ سال', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'در چند ثانیه', 'prefix');
- assert.equal(moment(0).from(30000), 'چند ثانیه پیش', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'چند ثانیه پیش', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'در چند ثانیه', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'در ۵ روز', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'امروز ساعت ۱۲:۰۰', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'امروز ساعت ۱۲:۲۵', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'امروز ساعت ۱۳:۰۰', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'فردا ساعت ۱۲:۰۰', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'امروز ساعت ۱۱:۰۰', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'دیروز ساعت ۱۲:۰۰', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '۱ ۰۱ ۱م', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '۱ ۰۱ ۱م', 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', 'Jan 14 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fi');
- test('parse', function (assert) {
- var tests = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'su, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. sunnuntai su su'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'],
- ['LTS', '15.25.50'],
- ['L', '14.02.2010'],
- ['LL', '14. helmikuuta 2010'],
- ['LLL', '14. helmikuuta 2010, klo 15.25'],
- ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'],
- ['l', '14.2.2010'],
- ['ll', '14. helmi 2010'],
- ['lll', '14. helmi 2010, klo 15.25'],
- ['llll', 'su, 14. helmi 2010, klo 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st');
- });
- test('format month', function (assert) {
- var expected = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'muutama sekunti', '44 seconds = few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuutti', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuutti', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'kaksi minuuttia', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuuttia', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'tunti', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'tunti', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'kaksi tuntia', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'viisi tuntia', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tuntia', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'päivä', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'päivä', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'kaksi päivää', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'päivä', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'viisi päivää', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päivää', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'kuukausi', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'kuukausi', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'kuukausi', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'kaksi kuukautta', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'kaksi kuukautta', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'kolme kuukautta', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'kuukausi', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'viisi kuukautta', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'vuosi', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'kaksi vuotta', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'vuosi', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'viisi vuotta', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'muutaman sekunnin päästä', 'prefix');
- assert.equal(moment(0).from(30000), 'muutama sekunti sitten', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'muutama sekunti sitten', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'muutaman sekunnin päästä', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'viiden päivän päästä', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'tänään klo 12.00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'tänään klo 12.25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'tänään klo 13.00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'huomenna klo 12.00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'tänään klo 11.00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'eilen klo 12.00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'yksi viikko sitten');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'yhden viikon päästä');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'kaksi viikkoa sitten');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'kaden viikon päästä');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fo');
- test('parse', function (assert) {
- var tests = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd [tann] Do MMMM YYYY, h:mm:ss a', 'sunnudagur tann 14. februar 2010, 3:25:50 pm'],
- ['ddd hA', 'sun 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. sunnudagur sun su'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 februar 2010'],
- ['LLL', '14 februar 2010 15:25'],
- ['LLLL', 'sunnudagur 14. februar, 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 feb 2010'],
- ['lll', '14 feb 2010 15:25'],
- ['llll', 'sun 14. feb, 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'fá sekund', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ein minutt', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ein minutt', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuttir', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuttir', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein tími', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein tími', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tímar', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tímar', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tímar', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dagur', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dagur', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dagur', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein mánaði', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein mánaði', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein mánaði', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánaðir', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánaðir', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánaðir', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein mánaði', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánaðir', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eitt ár', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eitt ár', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'um fá sekund', 'prefix');
- assert.equal(moment(0).from(30000), 'fá sekund síðani', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'fá sekund síðani', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'um fá sekund', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'um 5 dagar', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Í dag kl. 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Í dag kl. 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Í dag kl. 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Í morgin kl. 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Í dag kl. 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Í gjár kl. 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[síðstu] dddd [kl] LT'), 'today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[síðstu] dddd [kl] LT'), 'today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[síðstu] dddd [kl] LT'), 'today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'yksi viikko sitten');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'yhden viikon päästä');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'kaksi viikkoa sitten');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'kaden viikon päästä');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fr-ca');
- test('parse', function (assert) {
- var i,
- tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14e 2010, 3:25:50 pm'],
- ['ddd, hA', 'dim., 3PM'],
- ['M Mo MM MMMM MMM', '2 2e 02 février févr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14e 14'],
- ['d do dddd ddd dd', '0 0e dimanche dim. Di'],
- ['DDD DDDo DDDD', '45 45e 045'],
- ['w wo ww', '8 8e 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[le] Do [jour du mois]', 'le 14e jour du mois'],
- ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'],
- ['LTS', '15:25:50'],
- ['L', '2010-02-14'],
- ['LL', '14 février 2010'],
- ['LLL', '14 février 2010 15:25'],
- ['LLLL', 'dimanche 14 février 2010 15:25'],
- ['l', '2010-2-14'],
- ['ll', '14 févr. 2010'],
- ['lll', '14 févr. 2010 15:25'],
- ['llll', 'dim. 14 févr. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2017, 0, 1]).format('Mo'), '1er', '1er');
- assert.equal(moment([2017, 1, 1]).format('Mo'), '2e', '2e');
- assert.equal(moment([2017, 0, 1]).format('Qo'), '1er', '1er');
- assert.equal(moment([2017, 3, 1]).format('Qo'), '2e', '2e');
- assert.equal(moment([2017, 0, 1]).format('Do'), '1er', '1er');
- assert.equal(moment([2017, 0, 2]).format('Do'), '2e', '2e');
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e');
- assert.equal(moment([2017, 0, 1]).format('do'), '0e', '0e');
- assert.equal(moment([2017, 0, 2]).format('do'), '1er', '1er');
- assert.equal(moment([2017, 0, 4]).format('wo Wo'), '1re 1re', '1re 1re');
- assert.equal(moment([2017, 0, 11]).format('wo Wo'), '2e 2e', '2e 2e');
- });
- test('format month', function (assert) {
- var i,
- expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix');
- assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days');
- });
- test('same day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Aujourd’hui à 12:00', 'Today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd’hui à 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd’hui à 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 12:00', 'Tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd’hui à 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 12:00', 'Yesterday at the same time');
- });
- test('same next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('same last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('same all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1re', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1re', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2e', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2e', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3e', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fr-ch');
- test('parse', function (assert) {
- var i,
- tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14e 2010, 3:25:50 pm'],
- ['ddd, hA', 'dim., 3PM'],
- ['M Mo MM MMMM MMM', '2 2e 02 février févr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14e 14'],
- ['d do dddd ddd dd', '0 0e dimanche dim. Di'],
- ['DDD DDDo DDDD', '45 45e 045'],
- ['w wo ww', '6 6e 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[le] Do [jour du mois]', 'le 14e jour du mois'],
- ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 février 2010'],
- ['LLL', '14 février 2010 15:25'],
- ['LLLL', 'dimanche 14 février 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 févr. 2010'],
- ['lll', '14 févr. 2010 15:25'],
- ['llll', 'dim. 14 févr. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2017, 0, 1]).format('Mo'), '1er', '1er');
- assert.equal(moment([2017, 1, 1]).format('Mo'), '2e', '2e');
- assert.equal(moment([2017, 0, 1]).format('Qo'), '1er', '1er');
- assert.equal(moment([2017, 3, 1]).format('Qo'), '2e', '2e');
- assert.equal(moment([2017, 0, 1]).format('Do'), '1er', '1er');
- assert.equal(moment([2017, 0, 2]).format('Do'), '2e', '2e');
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e');
- assert.equal(moment([2017, 0, 1]).format('do'), '0e', '0e');
- assert.equal(moment([2017, 0, 2]).format('do'), '1er', '1er');
- assert.equal(moment([2017, 0, 4]).format('wo Wo'), '1re 1re', '1re 1re');
- assert.equal(moment([2017, 0, 11]).format('wo Wo'), '2e 2e', '2e 2e');
- });
- test('format month', function (assert) {
- var i,
- expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix');
- assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days');
- });
- test('same day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Aujourd’hui à 12:00', 'Today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd’hui à 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd’hui à 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 12:00', 'Tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd’hui à 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 12:00', 'Yesterday at the same time');
- });
- test('same next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('same last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('same all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52e', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1re', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1re', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2e', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2e', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fr');
- test('parse', function (assert) {
- var i,
- tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'dim., 3PM'],
- ['M Mo MM MMMM MMM', '2 2e 02 février févr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0e dimanche dim. Di'],
- ['DDD DDDo DDDD', '45 45e 045'],
- ['w wo ww', '6 6e 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[le] Do [jour du mois]', 'le 14 jour du mois'],
- ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 février 2010'],
- ['LLL', '14 février 2010 15:25'],
- ['LLLL', 'dimanche 14 février 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 févr. 2010'],
- ['lll', '14 févr. 2010 15:25'],
- ['llll', 'dim. 14 févr. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2017, 0, 1]).format('Mo'), '1er', '1er');
- assert.equal(moment([2017, 1, 1]).format('Mo'), '2e', '2e');
- assert.equal(moment([2017, 0, 1]).format('Qo'), '1er', '1er');
- assert.equal(moment([2017, 3, 1]).format('Qo'), '2e', '2e');
- assert.equal(moment([2017, 0, 1]).format('Do'), '1er', '1er');
- assert.equal(moment([2017, 0, 2]).format('Do'), '2', '2');
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e');
- assert.equal(moment([2017, 0, 1]).format('do'), '0e', '0e');
- assert.equal(moment([2017, 0, 2]).format('do'), '1er', '1er');
- assert.equal(moment([2017, 0, 4]).format('wo Wo'), '1re 1re', '1re 1re');
- assert.equal(moment([2017, 0, 11]).format('wo Wo'), '2e 2e', '2e 2e');
- });
- test('format month', function (assert) {
- var i,
- expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix');
- assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days');
- });
- test('same day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Aujourd’hui à 12:00', 'Today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd’hui à 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd’hui à 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 12:00', 'Tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd’hui à 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 12:00', 'Yesterday at the same time');
- });
- test('same next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('same last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('same all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52e', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1re', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1re', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2e', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2e', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('fy');
- test('parse', function (assert) {
- var tests = 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai._juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, HH:mm:ss', 'snein, febrewaris 14de 2010, 15:25:50'],
- ['ddd, HH', 'si., 15'],
- ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14de 14'],
- ['d do dddd ddd dd', '0 0de snein si. Si'],
- ['DDD DDDo DDDD', '45 45ste 045'],
- ['w wo ww', '6 6de 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45ste day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14-02-2010'],
- ['LL', '14 febrewaris 2010'],
- ['LLL', '14 febrewaris 2010 15:25'],
- ['LLLL', 'snein 14 febrewaris 2010 15:25'],
- ['l', '14-2-2010'],
- ['ll', '14 feb. 2010'],
- ['lll', '14 feb. 2010 15:25'],
- ['llll', 'si. 14 feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste');
- });
- test('format month', function (assert) {
- var expected = 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai_juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'snein si. Si_moandei mo. Mo_tiisdei ti. Ti_woansdei wo. Wo_tongersdei to. To_freed fr. Fr_sneon so. So'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'in pear sekonden', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ien minút', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ien minút', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ien oere', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ien oere', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oeren', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oeren', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oeren', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ien dei', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ien dei', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ien dei', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ien moanne', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ien moanne', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ien moanne', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 moannen', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 moannen', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 moannen', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ien moanne', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 moannen', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ien jier', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jierren', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ien jier', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jierren', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'oer in pear sekonden', 'prefix');
- assert.equal(moment(0).from(30000), 'in pear sekonden lyn', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'in pear sekonden lyn', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'oer in pear sekonden', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'oer 5 dagen', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'hjoed om 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'hjoed om 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'hjoed om 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'moarn om 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'hjoed om 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'juster om 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('month abbreviation', function (assert) {
- assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot');
- assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('gd');
- var months = [
- 'Am Faoilleach,Faoi',
- 'An Gearran,Gear',
- 'Am Màrt,Màrt',
- 'An Giblean,Gibl',
- 'An Cèitean,Cèit',
- 'An t-Ògmhios,Ògmh',
- 'An t-Iuchar,Iuch',
- 'An Lùnastal,Lùn',
- 'An t-Sultain,Sult',
- 'An Dàmhair,Dàmh',
- 'An t-Samhain,Samh',
- 'An Dùbhlachd,Dùbh'
- ];
- test('parse', function (assert) {
- function equalTest(monthName, monthFormat, monthNum) {
- assert.equal(moment(monthName, monthFormat).month(), monthNum, monthName + ' should be month ' + (monthNum + 1));
- }
- for (var i = 0; i < 12; i++) {
- var testMonth = months[i].split(',');
- equalTest(testMonth[0], 'MMM', i);
- equalTest(testMonth[1], 'MMM', i);
- equalTest(testMonth[0], 'MMMM', i);
- equalTest(testMonth[1], 'MMMM', i);
- equalTest(testMonth[0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(testMonth[1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(testMonth[0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(testMonth[1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Didòmhnaich, An Gearran 14mh 2010, 3:25:50 pm'],
- ['ddd, hA', 'Did, 3PM'],
- ['M Mo MM MMMM MMM', '2 2na 02 An Gearran Gear'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14mh 14'],
- ['d do dddd ddd dd', '0 0mh Didòmhnaich Did Dò'],
- ['DDD DDDo DDDD', '45 45mh 045'],
- ['w wo ww', '6 6mh 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[an] DDDo [latha den bhliadhna]', 'an 45mh latha den bhliadhna'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 An Gearran 2010'],
- ['LLL', '14 An Gearran 2010 15:25'],
- ['LLLL', 'Didòmhnaich, 14 An Gearran 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Gear 2010'],
- ['lll', '14 Gear 2010 15:25'],
- ['llll', 'Did, 14 Gear 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1d', '1d');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2na', '2na');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3mh', '3mh');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4mh', '4mh');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5mh', '5mh');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6mh', '6mh');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7mh', '7mh');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8mh', '8mh');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9mh', '9mh');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10mh', '10mh');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11mh', '11mh');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12na', '12na');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13mh', '13mh');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14mh', '14mh');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15mh', '15mh');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16mh', '16mh');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17mh', '17mh');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18mh', '18mh');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19mh', '19mh');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20mh', '20mh');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21mh', '21mh');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22na', '22na');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23mh', '23mh');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24mh', '24mh');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25mh', '25mh');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26mh', '26mh');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27mh', '27mh');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28mh', '28mh');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29mh', '29mh');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30mh', '30mh');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31mh', '31mh');
- });
- test('format month', function (assert) {
- var expected = months;
- for (var i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = ['Didòmhnaich Did Dò', 'Diluain Dil Lu', 'Dimàirt Dim Mà', 'Diciadain Dic Ci', 'Diardaoin Dia Ar', 'Dihaoine Dih Ha', 'Disathairne Dis Sa'];
- for (var i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beagan diogan', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'mionaid', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'mionaid', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mionaidean', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mionaidean', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uair', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uair', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uairean', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uairean', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uairean', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'latha', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'latha', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 latha', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'latha', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 latha', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 latha', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mìos', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mìos', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mìos', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mìosan', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mìosan', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mìosan', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mìos', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mìosan', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bliadhna', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 bliadhna', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bliadhna', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bliadhna', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ann an beagan diogan', 'prefix');
- assert.equal(moment(0).from(30000), 'bho chionn beagan diogan', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'bho chionn beagan diogan', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ann an beagan diogan', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'ann an 5 latha', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'An-diugh aig 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'An-diugh aig 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'An-diugh aig 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'A-màireach aig 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'An-diugh aig 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'An-dè aig 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [aig] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [aig] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [aig] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [seo chaidh] [aig] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [seo chaidh] [aig] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [seo chaidh] [aig] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52na', 'Faoi 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1d', 'Faoi 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1d', 'Faoi 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2na', 'Faoi 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2na', 'Faoi 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('gl');
- test('parse', function (assert) {
- var tests = 'xaneiro xan._febreiro feb._marzo mar._abril abr._maio mai._xuño xuñ._xullo xul._agosto ago._setembro set._outubro out._novembro nov._decembro dec.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febreiro 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'dom., 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 febreiro feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd dd', '0 0º domingo dom. do'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '6 6º 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 de febreiro de 2010'],
- ['LLL', '14 de febreiro de 2010 15:25'],
- ['LLLL', 'domingo, 14 de febreiro de 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 de feb. de 2010'],
- ['lll', '14 de feb. de 2010 15:25'],
- ['llll', 'dom., 14 de feb. de 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'xaneiro xan._febreiro feb._marzo mar._abril abr._maio mai._xuño xuñ._xullo xul._agosto ago._setembro set._outubro out._novembro nov._decembro dec.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'domingo dom. do_luns lun. lu_martes mar. ma_mércores mér. mé_xoves xov. xo_venres ven. ve_sábado sáb. sá'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'uns segundos', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'unha hora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'unha hora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un ano', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un ano', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'nuns segundos', 'prefix');
- assert.equal(moment(0).from(30000), 'hai uns segundos', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'hai uns segundos', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'nuns segundos', 'nuns segundos');
- assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'hoxe ás 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'hoxe ás 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'hoxe ás 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'mañá ás 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañá ás 11:00', 'tomorrow minus 1 hour');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoxe ás 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'onte á 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('regression tests', function (assert) {
- var lastWeek = moment().subtract({d: 4}).hours(1);
- assert.equal(lastWeek.calendar(), lastWeek.format('[o] dddd [pasado a] LT'), '1 o\'clock bug');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('gom-latn');
- test('parse', function (assert) {
- var i,
- tests = 'Janer Jan._Febrer Feb._Mars Mars_Abril Abr._Mai Mai_Jun Jun_Julai Jul._Agost Ago._Setembr Set._Otubr Otu._Novembr Nov._Dezembr Dez.'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Aitar, Febrer 14er 2010, 3:25:50 donparam'],
- ['ddd, hA', 'Ait., 3donparam'],
- ['M Mo MM MMMM MMM', '2 2 02 Febrer Feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14er 14'],
- ['d do dddd ddd dd', '0 0 Aitar Ait. Ai'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'donparam donparam'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', 'donparam 3:25:50 vazta'],
- ['L', '14-02-2010'],
- ['LL', '14 Febrer 2010'],
- ['LLL', '14 Febrer 2010 donparam 3:25 vazta'],
- ['LLLL', 'Aitar, Febrerachea 14er, 2010, donparam 3:25 vazta'],
- ['l', '14-2-2010'],
- ['ll', '14 Feb. 2010'],
- ['lll', '14 Feb. 2010 donparam 3:25 vazta'],
- ['llll', 'Ait., 14 Feb. 2010, donparam 3:25 vazta']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var i,
- expected = 'Janer Jan._Febrer Feb._Mars Mars_Abril Abr._Mai Mai_Jun Jun_Julai Jul._Agost Ago._Setembr Set._Otubr Otu._Novembr Nov._Dezembr Dez.'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'Aitar Ait. Ai_Somar Som. Sm_Mongllar Mon. Mo_Budvar Bud. Bu_Brestar Bre. Br_Sukrar Suk. Su_Son\'var Son. Sn'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'thodde secondanim', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eka mintan', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eka mintan', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mintanim', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mintanim', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eka horan', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eka horan', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horanim', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horanim', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horanim', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'eka disan', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'eka disan', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 disanim', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'eka disan', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 disanim', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 disanim', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'eka mhoinean', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'eka mhoinean', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'eka mhoinean', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mhoineanim', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mhoineanim', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mhoineanim', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'eka mhoinean', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mhoineanim', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eka vorsan', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vorsanim', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eka vorsan', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 vorsanim', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'thodde second', 'prefix');
- assert.equal(moment(0).from(30000), 'thodde second adim', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'thodde second adim', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'thodde second', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 dis', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Aiz donparam 12:00 vazta', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Aiz donparam 12:25 vazta', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Aiz donparam 1:00 vazta', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Faleam donparam 12:00 vazta', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aiz sokalli 11:00 vazta', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kal donparam 12:00 vazta', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[Ieta to] dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Ieta to] dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Ieta to] dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Fatlo] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Fatlo] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Fatlo] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('he');
- test('parse', function (assert) {
- var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 אחה"צ'],
- ['ddd, h A', 'א׳, 3 אחרי הצהריים'],
- ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 ראשון א׳ א'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'אחה"צ אחרי הצהריים'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 בפברואר 2010'],
- ['LLL', '14 בפברואר 2010 15:25'],
- ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 פבר׳ 2010'],
- ['lll', '14 פבר׳ 2010 15:25'],
- ['llll', 'א׳, 14 פבר׳ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split('|'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'מספר שניות', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'דקה', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'דקה', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 דקות', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 דקות', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'שעה', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'שעה', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'שעתיים', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 שעות', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 שעות', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'יום', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'יום', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'יומיים', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'יום', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ימים', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ימים', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'חודש', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'חודש', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'חודש', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'חודשיים', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'חודשיים', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 חודשים', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'חודש', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 חודשים', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'שנה', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'שנתיים', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 3699}), true), '10 שנים', '345 days = 10 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 7340}), true), '20 שנה', '548 days = 20 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'שנה', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 שנים', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'בעוד מספר שניות', 'prefix');
- assert.equal(moment(0).from(30000), 'לפני מספר שניות', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'לפני מספר שניות', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'בעוד מספר שניות', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'בעוד 5 ימים', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'היום ב־12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'היום ב־12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'היום ב־13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'מחר ב־12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'היום ב־11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'אתמול ב־12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('hi');
- test('parse', function (assert) {
- var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss बजे', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे'],
- ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'],
- ['M Mo MM MMMM MMM', '२ २ ०२ फ़रवरी फ़र.'],
- ['YYYY YY', '२०१० १०'],
- ['D Do DD', '१४ १४ १४'],
- ['d do dddd ddd dd', '० ० रविवार रवि र'],
- ['DDD DDDo DDDD', '४५ ४५ ०४५'],
- ['w wo ww', '८ ८ ०८'],
- ['h hh', '३ ०३'],
- ['H HH', '१५ १५'],
- ['m mm', '२५ २५'],
- ['s ss', '५० ५०'],
- ['a A', 'दोपहर दोपहर'],
- ['LTS', 'दोपहर ३:२५:५० बजे'],
- ['L', '१४/०२/२०१०'],
- ['LL', '१४ फ़रवरी २०१०'],
- ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'],
- ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'],
- ['l', '१४/२/२०१०'],
- ['ll', '१४ फ़र. २०१०'],
- ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'],
- ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१');
- });
- test('format month', function (assert) {
- var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'कुछ ही क्षण', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनट', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनट', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनट', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनट', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक घंटा', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक घंटा', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ घंटे', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ घंटे', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ घंटे', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिन', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिन', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिन', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिन', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिन', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिन', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महीने', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महीने', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महीने', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महीने', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महीने', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महीने', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महीने', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महीने', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक वर्ष', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ वर्ष', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक वर्ष', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ वर्ष', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'कुछ ही क्षण में', 'prefix');
- assert.equal(moment(0).from(30000), 'कुछ ही क्षण पहले', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'कुछ ही क्षण पहले', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'कुछ ही क्षण में', 'कुछ ही क्षण में');
- assert.equal(moment().add({d: 5}).fromNow(), '५ दिन में', '५ दिन में');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'आज दोपहर १२:०० बजे', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'आज दोपहर १२:२५ बजे', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'आज दोपहर ३:०० बजे', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'कल दोपहर १२:०० बजे', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज दोपहर ११:०० बजे', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'कल दोपहर १२:०० बजे', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'रात', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सुबह', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दोपहर', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'शाम', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'शाम', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'रात', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सुबह', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दोपहर', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'शाम', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'शाम', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('hr');
- test('parse', function (assert) {
- var tests = 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. veljače 2010, 3:25:50 pm'],
- ['ddd, hA', 'ned., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 veljača velj.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. nedjelja ned. ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. veljača 2010'],
- ['LLL', '14. veljača 2010 15:25'],
- ['LLLL', 'nedjelja, 14. veljača 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. velj. 2010'],
- ['lll', '14. velj. 2010 15:25'],
- ['llll', 'ned., 14. velj. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'par sekundi', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedna minuta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedna minuta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix');
- assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'prije par sekundi', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za par sekundi', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'danas u 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'jučer u 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[u] dddd [u] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- case 3:
- return '[prošlu] dddd [u] LT';
- case 6:
- return '[prošle] [subote] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[prošli] dddd [u] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('hu');
- test('parse', function (assert) {
- var tests = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, HH:mm:ss', 'vasárnap, február 14. 2010, 15:25:50'],
- ['ddd, HH', 'vas, 15'],
- ['M Mo MM MMMM MMM', '2 2. 02 február feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. vasárnap vas v'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['[az év] DDDo [napja]', 'az év 45. napja'],
- ['LTS', '15:25:50'],
- ['L', '2010.02.14.'],
- ['LL', '2010. február 14.'],
- ['LLL', '2010. február 14. 15:25'],
- ['LLLL', '2010. február 14., vasárnap 15:25'],
- ['l', '2010.2.14.'],
- ['ll', '2010. feb 14.'],
- ['lll', '2010. feb 14. 15:25'],
- ['llll', '2010. feb 14., vas 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), 'de', 'am');
- assert.equal(moment([2011, 2, 23, 11, 59]).format('a'), 'de', 'am');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), 'du', 'pm');
- assert.equal(moment([2011, 2, 23, 23, 59]).format('a'), 'du', 'pm');
- assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'DE', 'AM');
- assert.equal(moment([2011, 2, 23, 11, 59]).format('A'), 'DE', 'AM');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'DU', 'PM');
- assert.equal(moment([2011, 2, 23, 23, 59]).format('A'), 'DU', 'PM');
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'néhány másodperc', '44 másodperc = néhány másodperc');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'egy perc', '45 másodperc = egy perc');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'egy perc', '89 másodperc = egy perc');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 perc', '90 másodperc = 2 perc');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 perc', '44 perc = 44 perc');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'egy óra', '45 perc = egy óra');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'egy óra', '89 perc = egy óra');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 óra', '90 perc = 2 óra');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 óra', '5 óra = 5 óra');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 óra', '21 óra = 21 óra');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'egy nap', '22 óra = egy nap');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'egy nap', '35 óra = egy nap');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 nap', '36 óra = 2 nap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'egy nap', '1 nap = egy nap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 nap', '5 nap = 5 nap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 nap', '25 nap = 25 nap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'egy hónap', '26 nap = egy hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'egy hónap', '30 nap = egy hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'egy hónap', '45 nap = egy hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 hónap', '46 nap = 2 hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 hónap', '75 nap = 2 hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 hónap', '76 nap = 3 hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'egy hónap', '1 hónap = egy hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 hónap', '5 hónap = 5 hónap');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'egy év', '345 nap = egy év');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 év', '548 nap = 2 év');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'egy év', '1 év = egy év');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 év', '5 év = 5 év');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'néhány másodperc múlva', 'prefix');
- assert.equal(moment(0).from(30000), 'néhány másodperce', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'néhány másodperce', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'néhány másodperc múlva', 'néhány másodperc múlva');
- assert.equal(moment().add({d: 5}).fromNow(), '5 nap múlva', '5 nap múlva');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ma 12:00-kor', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ma 12:25-kor', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'ma 13:00-kor', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'holnap 12:00-kor', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ma 11:00-kor', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'tegnap 12:00-kor', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_');
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_');
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'egy héte');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'egy hét múlva');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 hete');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 hét múlva');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '52 52 52.', 'Dec 26 2011 should be week 52');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('hy-am');
- test('parse', function (assert) {
- var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('parse exceptional case', function (assert) {
- assert.equal(moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989');
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'կիրակի, 14 փետրվարի 2010, 15:25:50'],
- ['ddd, h A', 'կրկ, 3 ցերեկվա'],
- ['M Mo MM MMMM MMM', '2 2 02 փետրվար փտր'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 կիրակի կրկ կրկ'],
- ['DDD DDDo DDDD', '45 45-րդ 045'],
- ['w wo ww', '7 7-րդ 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'ցերեկվա ցերեկվա'],
- ['[տարվա] DDDo [օրը]', 'տարվա 45-րդ օրը'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 փետրվարի 2010 թ.'],
- ['LLL', '14 փետրվարի 2010 թ., 15:25'],
- ['LLLL', 'կիրակի, 14 փետրվարի 2010 թ., 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 փտր 2010 թ.'],
- ['lll', '14 փտր 2010 թ., 15:25'],
- ['llll', 'կրկ, 14 փտր 2010 թ., 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format meridiem', function (assert) {
- assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'գիշերվա', 'night');
- assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'գիշերվա', 'night');
- assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'առավոտվա', 'morning');
- assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'առավոտվա', 'morning');
- assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'ցերեկվա', 'afternoon');
- assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'ցերեկվա', 'afternoon');
- assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'երեկոյան', 'evening');
- assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'երեկոյան', 'evening');
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ին', '1-ին');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-րդ', '2-րդ');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-րդ', '3-րդ');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-րդ', '4-րդ');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-րդ', '5-րդ');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-րդ', '6-րդ');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-րդ', '7-րդ');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-րդ', '8-րդ');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-րդ', '9-րդ');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-րդ', '10-րդ');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-րդ', '11-րդ');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-րդ', '12-րդ');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-րդ', '13-րդ');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-րդ', '14-րդ');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-րդ', '15-րդ');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-րդ', '16-րդ');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-րդ', '17-րդ');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-րդ', '18-րդ');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-րդ', '19-րդ');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-րդ', '20-րդ');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-րդ', '21-րդ');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-րդ', '22-րդ');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-րդ', '23-րդ');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-րդ', '24-րդ');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-րդ', '25-րդ');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-րդ', '26-րդ');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-րդ', '27-րդ');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-րդ', '28-րդ');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-րդ', '29-րդ');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-րդ', '30-րդ');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-րդ', '31-րդ');
- });
- test('format month', function (assert) {
- var expected = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format month case', function (assert) {
- var months = {
- 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
- 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
- }
- });
- test('format month short case', function (assert) {
- var monthsShort = {
- 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
- 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
- assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]);
- }
- });
- test('format month case with escaped symbols', function (assert) {
- var months = {
- 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
- 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>');
- assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMMM'), '1-ին օրը ' + months.accusative[i], '1-ին օրը ' + months.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]);
- }
- });
- test('format month short case with escaped symbols', function (assert) {
- var monthsShort = {
- 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
- 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMM[</b>]'), '<i>1</i> <b>' + monthsShort.accusative[i] + '</b>', '1 <b>' + monthsShort.accusative[i] + '</b>');
- assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMM'), '1-ին օրը ' + monthsShort.accusative[i], '1-ին օրը ' + monthsShort.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երք_չորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'մի քանի վայրկյան', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'րոպե', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'րոպե', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 րոպե', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 րոպե', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ժամ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ժամ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ժամ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ժամ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ժամ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'օր', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'օր', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 օր', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'օր', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 օր', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 օր', '11 days = 11 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 օր', '21 days = 21 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 օր', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ամիս', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ամիս', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ամիս', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ամիս', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ամիս', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ամիս', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ամիս', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ամիս', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'տարի', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 տարի', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'տարի', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 տարի', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'մի քանի վայրկյան հետո', 'prefix');
- assert.equal(moment(0).from(30000), 'մի քանի վայրկյան առաջ', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'մի քանի վայրկյան հետո', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 օր հետո', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'այսօր 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'այսօր 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'այսօր 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'վաղը 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'այսօր 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'երեկ 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- return 'dddd [օրը ժամը] LT';
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- return '[անցած] dddd [օրը ժամը] LT';
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ին', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ին', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-րդ', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-րդ', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-րդ', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('id');
- test('parse', function (assert) {
- var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sore'],
- ['ddd, hA', 'Min, 3sore'],
- ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Minggu Min Mg'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'sore sore'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15.25.50'],
- ['L', '14/02/2010'],
- ['LL', '14 Februari 2010'],
- ['LLL', '14 Februari 2010 pukul 15.25'],
- ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 pukul 15.25'],
- ['llll', 'Min, 14 Feb 2010 pukul 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa detik', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'semenit', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'semenit', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dalam beberapa detik', 'prefix');
- assert.equal(moment(0).from(30000), 'beberapa detik yang lalu', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'beberapa detik yang lalu', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa detik', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hari ini pukul 12.00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 12.25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 13.00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Besok pukul 12.00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 11.00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kemarin pukul 12.00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('is');
- test('parse', function (assert) {
- var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'],
- ['ddd, hA', 'sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. sunnudagur sun Su'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. febrúar 2010'],
- ['LLL', '14. febrúar 2010 kl. 15:25'],
- ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb 2010'],
- ['lll', '14. feb 2010 kl. 15:25'],
- ['llll', 'sun, 14. feb 2010 kl. 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nokkrar sekúndur', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'mínúta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'mínúta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mínútur', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mínútur', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 21}), true), '21 mínúta', '21 minutes = 21 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'klukkustund', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'klukkustund', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 klukkustundir', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 klukkustundir', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 klukkustund', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dagur', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dagur', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dagur', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 dagar', '11 days = 11 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 dagur', '21 days = 21 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mánuður', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mánuður', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mánuður', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánuðir', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánuðir', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánuðir', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mánuður', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánuðir', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ár', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ár', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 ár', '21 years = 21 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'eftir nokkrar sekúndur', 'prefix');
- assert.equal(moment(0).from(30000), 'fyrir nokkrum sekúndum síðan', 'suffix');
- assert.equal(moment().subtract({m: 1}).fromNow(), 'fyrir mínútu síðan', 'a minute ago');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'fyrir nokkrum sekúndum síðan', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'eftir nokkrar sekúndur', 'in a few seconds');
- assert.equal(moment().add({m: 1}).fromNow(), 'eftir mínútu', 'in a minute');
- assert.equal(moment().add({d: 5}).fromNow(), 'eftir 5 daga', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'í dag kl. 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'í dag kl. 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'í dag kl. 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'á morgun kl. 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'í dag kl. 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'í gær kl. 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('it');
- test('parse', function (assert) {
- var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'domenica, febbraio 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'dom, 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd dd', '0 0º domenica dom do'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '6 6º 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 febbraio 2010'],
- ['LLL', '14 febbraio 2010 15:25'],
- ['LLLL', 'domenica, 14 febbraio 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 feb 2010'],
- ['lll', '14 feb 2010 15:25'],
- ['llll', 'dom, 14 feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'domenica dom do_lunedì lun lu_martedì mar ma_mercoledì mer me_giovedì gio gi_venerdì ven ve_sabato sab sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'alcuni secondi', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuti', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un\'ora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un\'ora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ore', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un giorno', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un giorno', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 giorni', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un giorno', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 giorni', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 giorni', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mese', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mese', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mese', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesi', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesi', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesi', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mese', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesi', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un anno', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anni', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un anno', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anni', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix');
- assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'in alcuni secondi', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'tra 5 giorni', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Oggi alle 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Oggi alle 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Oggi alle 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Domani alle 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Oggi alle 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ieri alle 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, weekday, datestring;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- // Different date string
- weekday = parseInt(m.format('d'), 10);
- datestring = (weekday === 0) ? '[la scorsa] dddd [alle] LT' : '[lo scorso] dddd [alle] LT';
- assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ja');
- test('parse', function (assert) {
- var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14日 2010, 午後 3:25:50'],
- ['ddd, Ah', '日, 午後3'],
- ['M Mo MM MMMM MMM', '2 2 02 2月 2月'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14日 14'],
- ['d do dddd ddd dd', '0 0日 日曜日 日 日'],
- ['DDD DDDo DDDD', '45 45日 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', '午後 午後'],
- ['[the] DDDo [day of the year]', 'the 45日 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '2010/02/14'],
- ['LL', '2010年2月14日'],
- ['LLL', '2010年2月14日 15:25'],
- ['LLLL', '2010年2月14日 15:25 日曜日'],
- ['l', '2010/02/14'],
- ['ll', '2010年2月14日'],
- ['lll', '2010年2月14日 15:25'],
- ['llll', '2010年2月14日 15:25 日曜日']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '数秒', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1分', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1分', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2分', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44分', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1時間', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1時間', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2時間', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5時間', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21時間', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1日', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1日', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2日', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1日', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5日', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25日', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1ヶ月', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1ヶ月', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1ヶ月', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2ヶ月', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2ヶ月', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3ヶ月', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1ヶ月', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5ヶ月', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1年', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2年', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1年', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), '数秒後', 'prefix');
- assert.equal(moment(0).from(30000), '数秒前', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), '数秒前', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), '数秒後', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5日後', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), '今日 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), '今日 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), '今日 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), '明日 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), '今日 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), '昨日 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('jv');
- test('parse', function (assert) {
- var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sonten'],
- ['ddd, hA', 'Min, 3sonten'],
- ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Minggu Min Mg'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'sonten sonten'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15.25.50'],
- ['L', '14/02/2010'],
- ['LL', '14 Februari 2010'],
- ['LLL', '14 Februari 2010 pukul 15.25'],
- ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 pukul 15.25'],
- ['llll', 'Min, 14 Feb 2010 pukul 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Minggu Min Mg_Senen Sen Sn_Seloso Sel Sl_Rebu Reb Rb_Kemis Kem Km_Jemuwah Jem Jm_Septu Sep Sp'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sawetawis detik', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'setunggal menit', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'setunggal menit', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'setunggal jam', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'setunggal jam', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sedinten', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sedinten', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dinten', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sedinten', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dinten', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dinten', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sewulan', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sewulan', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sewulan', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 wulan', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 wulan', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 wulan', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sewulan', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 wulan', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setaun', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taun', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setaun', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taun', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'wonten ing sawetawis detik', 'prefix');
- assert.equal(moment(0).from(30000), 'sawetawis detik ingkang kepengker', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'sawetawis detik ingkang kepengker', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'wonten ing sawetawis detik', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'wonten ing 5 dinten', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Dinten puniko pukul 12.00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Dinten puniko pukul 12.25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Dinten puniko pukul 13.00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Mbenjang pukul 12.00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dinten puniko pukul 11.00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kala wingi pukul 12.00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- // Monday is the first day of the week.
- // The week that contains Jan 1st is the first week of the year.
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ka');
- test('parse', function (assert) {
- var i,
- tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' უნდა იყოს თვე ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm'],
- ['ddd, hA', 'კვი, 3PM'],
- ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 მე-14 14'],
- ['d do dddd ddd dd', '0 0 კვირა კვი კვ'],
- ['DDD DDDo DDDD', '45 45-ე 045'],
- ['w wo ww', '7 მე-7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['წლის DDDo დღე', 'წლის 45-ე დღე'],
- ['LTS', '3:25:50 PM'],
- ['L', '14/02/2010'],
- ['LL', '14 თებერვალს 2010'],
- ['LLL', '14 თებერვალს 2010 3:25 PM'],
- ['LLLL', 'კვირა, 14 თებერვალს 2010 3:25 PM'],
- ['l', '14/2/2010'],
- ['ll', '14 თებ 2010'],
- ['lll', '14 თებ 2010 3:25 PM'],
- ['llll', 'კვი, 14 თებ 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე');
- assert.equal(moment('2011 40', 'YYYY DDD').format('DDDo'), 'მე-40', 'მე-40');
- assert.equal(moment('2011 50', 'YYYY DDD').format('DDDo'), '50-ე', '50-ე');
- assert.equal(moment('2011 60', 'YYYY DDD').format('DDDo'), 'მე-60', 'მე-60');
- assert.equal(moment('2011 100', 'YYYY DDD').format('DDDo'), 'მე-100', 'მე-100');
- assert.equal(moment('2011 101', 'YYYY DDD').format('DDDo'), '101-ე', '101-ე');
- });
- test('format month', function (assert) {
- var i,
- expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'რამდენიმე წამი', '44 წამი = რამდენიმე წამი');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'წუთი', '45 წამი = წუთი');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'წუთი', '89 წამი = წუთი');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 წუთი', '90 წამი = 2 წუთი');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 წუთი', '44 წამი = 44 წუთი');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'საათი', '45 წამი = საათი');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'საათი', '89 წამი = საათი');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 საათი', '90 წამი = 2 საათი');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 საათი', '5 საათი = 5 საათი');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 საათი', '21 საათი = 21 საათი');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'დღე', '22 საათი = დღე');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'დღე', '35 საათი = დღე');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 დღე', '36 საათი = 2 დღე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'დღე', '1 დღე = დღე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 დღე', '5 დღე = 5 დღე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 დღე', '25 დღე = 25 დღე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'თვე', '26 დღე = თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'თვე', '30 დღე = თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'თვე', '45 დღე = თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 თვე', '46 დღე = 2 თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 თვე', '75 დღე = 2 თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 თვე', '76 დღე = 3 თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'თვე', '1 თვე = თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 თვე', '5 თვე = 5 თვე');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'წელი', '345 დღე = წელი');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 წელი', '548 დღე = 2 წელი');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'წელი', '1 წელი = წელი');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 წელი', '5 წელი = 5 წელი');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'რამდენიმე წამში', 'ში სუფიქსი');
- assert.equal(moment(0).from(30000), 'რამდენიმე წამის უკან', 'უკან სუფიქსი');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'რამდენიმე წამის უკან', 'უნდა აჩვენოს როგორც წარსული');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'რამდენიმე წამში', 'რამდენიმე წამში');
- assert.equal(moment().add({d: 5}).fromNow(), '5 დღეში', '5 დღეში');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'დღეს 12:00 PM-ზე', 'დღეს ამავე დროს');
- assert.equal(moment(a).add({m: 25}).calendar(), 'დღეს 12:25 PM-ზე', 'ახლანდელ დროს დამატებული 25 წუთი');
- assert.equal(moment(a).add({h: 1}).calendar(), 'დღეს 1:00 PM-ზე', 'ახლანდელ დროს დამატებული 1 საათი');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ხვალ 12:00 PM-ზე', 'ხვალ ამავე დროს');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'დღეს 11:00 AM-ზე', 'ახლანდელ დროს გამოკლებული 1 საათი');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'გუშინ 12:00 PM-ზე', 'გუშინ ამავე დროს');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე ახლანდელ დროს');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასაწყისში');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასასრულს');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე ახლანდელ დროს');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასაწყისში');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასასრულს');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 კვირის უკან');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 კვირაში');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 კვირაში');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ლი', 'დეკ 26 2011 უნდა იყოს კვირა 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ლი', 'იან 1 2012 უნდა იყოს კვირა 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', 'იან 2 2012 უნდა იყოს კვირა 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', 'იან 8 2012 უნდა იყოს კვირა 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', 'იან 9 2012 უნდა იყოს კვირა 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('kk');
- test('parse', function (assert) {
- var tests = 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'жексенбі, 14-ші ақпан 2010, 15:25:50'],
- ['ddd, hA', 'жек, 3PM'],
- ['M Mo MM MMMM MMM', '2 2-ші 02 ақпан ақп'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-ші 14'],
- ['d do dddd ddd dd', '0 0-ші жексенбі жек жк'],
- ['DDD DDDo DDDD', '45 45-ші 045'],
- ['w wo ww', '7 7-ші 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[жылдың] DDDo [күні]', 'жылдың 45-ші күні'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 ақпан 2010'],
- ['LLL', '14 ақпан 2010 15:25'],
- ['LLLL', 'жексенбі, 14 ақпан 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 ақп 2010'],
- ['lll', '14 ақп 2010 15:25'],
- ['llll', 'жек, 14 ақп 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ші', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ші', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ші', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ші', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ші', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-шы', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ші', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ші', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-шы', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-шы', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ші', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ші', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ші', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ші', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ші', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-шы', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ші', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ші', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-шы', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-шы', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ші', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ші', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ші', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ші', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ші', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-шы', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ші', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ші', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-шы', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-шы', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ші', '31st');
- });
- test('format month', function (assert) {
- var expected = 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'жексенбі жек жк_дүйсенбі дүй дй_сейсенбі сей сй_сәрсенбі сәр ср_бейсенбі бей бй_жұма жұм жм_сенбі сен сн'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'бірнеше секунд', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'бір минут', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'бір минут', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минут', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минут', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'бір сағат', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'бір сағат', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сағат', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сағат', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сағат', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'бір күн', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'бір күн', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 күн', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'бір күн', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 күн', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 күн', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'бір ай', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'бір ай', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'бір ай', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ай', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ай', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ай', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'бір ай', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ай', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'бір жыл', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 жыл', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'бір жыл', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 жыл', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'бірнеше секунд ішінде', 'prefix');
- assert.equal(moment(0).from(30000), 'бірнеше секунд бұрын', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'бірнеше секунд бұрын', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'бірнеше секунд ішінде', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 күн ішінде', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Бүгін сағат 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Бүгін сағат 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Бүгін сағат 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Ертең сағат 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Бүгін сағат 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Кеше сағат 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [сағат] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [сағат] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [сағат] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Өткен аптаның] dddd [сағат] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Өткен аптаның] dddd [сағат] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Өткен аптаның] dddd [сағат] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ші', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ші', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ші', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ші', 'Jan 9 2012 should be week 3');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3-ші', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('km');
- test('parse', function (assert) {
- var tests = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'អាទិត្យ, កុម្ភៈ 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'អាទិត្យ, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 កុម្ភៈ កុម្ភៈ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 អាទិត្យ អាទិត្យ អាទិត្យ'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 កុម្ភៈ 2010'],
- ['LLL', '14 កុម្ភៈ 2010 15:25'],
- ['LLLL', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 កុម្ភៈ 2010'],
- ['lll', '14 កុម្ភៈ 2010 15:25'],
- ['llll', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31st');
- });
- test('format month', function (assert) {
- var expected = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'អាទិត្យ អាទិត្យ អាទិត្យ_ច័ន្ទ ច័ន្ទ ច័ន្ទ_អង្គារ អង្គារ អង្គារ_ពុធ ពុធ ពុធ_ព្រហស្បតិ៍ ព្រហស្បតិ៍ ព្រហស្បតិ៍_សុក្រ សុក្រ សុក្រ_សៅរ៍ សៅរ៍ សៅរ៍'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ប៉ុន្មានវិនាទី', '44 seconds = ប៉ុន្មានវិនាទី');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'មួយនាទី', '45 seconds = មួយនាទី');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'មួយនាទី', '89 seconds = មួយនាទី');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 នាទី', '90 seconds = 2 នាទី');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 នាទី', '44 minutes = 44 នាទី');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'មួយម៉ោង', '45 minutes = មួយម៉ោង');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'មួយម៉ោង', '89 minutes = មួយម៉ោង');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ម៉ោង', '90 minutes = 2 ម៉ោង');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ម៉ោង', '5 hours = 5 ម៉ោង');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ម៉ោង', '21 hours = 21 ម៉ោង');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'មួយថ្ងៃ', '22 hours = មួយថ្ងៃ');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'មួយថ្ងៃ', '35 hours = មួយថ្ងៃ');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ថ្ងៃ', '36 hours = 2 ថ្ងៃ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'មួយថ្ងៃ', '1 day = មួយថ្ងៃ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ថ្ងៃ', '5 days = 5 ថ្ងៃ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ថ្ងៃ', '25 days = 25 ថ្ងៃ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'មួយខែ', '26 days = មួយខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'មួយខែ', '30 days = មួយខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'មួយខែ', '43 days = មួយខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ខែ', '46 days = 2 ខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ខែ', '75 days = 2 ខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ខែ', '76 days = 3 ខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'មួយខែ', '1 month = មួយខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ខែ', '5 months = 5 ខែ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'មួយឆ្នាំ', '345 days = មួយឆ្នាំ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ឆ្នាំ', '548 days = 2 ឆ្នាំ');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'មួយឆ្នាំ', '1 year = មួយឆ្នាំ');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ឆ្នាំ', '5 years = 5 ឆ្នាំ');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ប៉ុន្មានវិនាទីទៀត', 'prefix');
- assert.equal(moment(0).from(30000), 'ប៉ុន្មានវិនាទីមុន', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ប៉ុន្មានវិនាទីមុន', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({
- s: 30
- }).fromNow(), 'ប៉ុន្មានវិនាទីទៀត', 'in a few seconds');
- assert.equal(moment().add({
- d: 5
- }).fromNow(), '5 ថ្ងៃទៀត', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ថ្ងៃនេះ ម៉ោង 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ថ្ងៃនេះ ម៉ោង 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'ថ្ងៃនេះ ម៉ោង 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ស្អែក ម៉ោង 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ថ្ងៃនេះ ម៉ោង 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ម្សិលមិញ ម៉ោង 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({
- d: i
- });
- assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({
- d: i
- });
- assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({
- w: 1
- }),
- weeksFromNow = moment().add({
- w: 1
- });
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({
- w: 2
- });
- weeksFromNow = moment().add({
- w: 2
- });
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('kn');
- test('parse', function (assert) {
- var tests = 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್ ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋಬ_ನವೆಂಬರ್ ನವೆಂಬ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂಬ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss', 'ಭಾನುವಾರ, ೧೪ನೇ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦'],
- ['ddd, a h ಗಂಟೆ', 'ಭಾನು, ಮಧ್ಯಾಹ್ನ ೩ ಗಂಟೆ'],
- ['M Mo MM MMMM MMM', '೨ ೨ನೇ ೦೨ ಫೆಬ್ರವರಿ ಫೆಬ್ರ'],
- ['YYYY YY', '೨೦೧೦ ೧೦'],
- ['D Do DD', '೧೪ ೧೪ನೇ ೧೪'],
- ['d do dddd ddd dd', '೦ ೦ನೇ ಭಾನುವಾರ ಭಾನು ಭಾ'],
- ['DDD DDDo DDDD', '೪೫ ೪೫ನೇ ೦೪೫'],
- ['w wo ww', '೮ ೮ನೇ ೦೮'],
- ['h hh', '೩ ೦೩'],
- ['H HH', '೧೫ ೧೫'],
- ['m mm', '೨೫ ೨೫'],
- ['s ss', '೫೦ ೫೦'],
- ['a A', 'ಮಧ್ಯಾಹ್ನ ಮಧ್ಯಾಹ್ನ'],
- ['LTS', 'ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦'],
- ['L', '೧೪/೦೨/೨೦೧೦'],
- ['LL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦'],
- ['LLL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'],
- ['LLLL', 'ಭಾನುವಾರ, ೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'],
- ['l', '೧೪/೨/೨೦೧೦'],
- ['ll', '೧೪ ಫೆಬ್ರ ೨೦೧೦'],
- ['lll', '೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'],
- ['llll', 'ಭಾನು, ೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '೧ನೇ', '೧ನೇ');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '೨ನೇ', '೨ನೇ');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '೩ನೇ', '೩ನೇ');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '೪ನೇ', '೪ನೇ');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '೫ನೇ', '೫ನೇ');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '೬ನೇ', '೬ನೇ');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '೭ನೇ', '೭ನೇ');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '೮ನೇ', '೮ನೇ');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '೯ನೇ', '೯ನೇ');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '೧೦ನೇ', '೧೦ನೇ');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '೧೧ನೇ', '೧೧ನೇ');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '೧೨ನೇ', '೧೨ನೇ');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '೧೩ನೇ', '೧೩ನೇ');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '೧೪ನೇ', '೧೪ನೇ');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '೧೫ನೇ', '೧೫ನೇ');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '೧೬ನೇ', '೧೬ನೇ');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '೧೭ನೇ', '೧೭ನೇ');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '೧೮ನೇ', '೧೮ನೇ');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '೧೯ನೇ', '೧೯ನೇ');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '೨೦ನೇ', '೨೦ನೇ');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '೨೧ನೇ', '೨೧ನೇ');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '೨೨ನೇ', '೨೨ನೇ');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '೨೩ನೇ', '೨೩ನೇ');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '೨೪ನೇ', '೨೪ನೇ');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '೨೫ನೇ', '೨೫ನೇ');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '೨೬ನೇ', '೨೬ನೇ');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '೨೭ನೇ', '೨೭ನೇ');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '೨೮ನೇ', '೨೮ನೇ');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '೨೯ನೇ', '೨೯ನೇ');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '೩೦ನೇ', '೩೦ನೇ');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '೩೧ನೇ', '೩೧ನೇ');
- });
- test('format month', function (assert) {
- var expected = 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್ ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋಬ_ನವೆಂಬರ್ ನವೆಂಬ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂಬ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ಭಾನುವಾರ ಭಾನು ಭಾ_ಸೋಮವಾರ ಸೋಮ ಸೋ_ಮಂಗಳವಾರ ಮಂಗಳ ಮಂ_ಬುಧವಾರ ಬುಧ ಬು_ಗುರುವಾರ ಗುರು ಗು_ಶುಕ್ರವಾರ ಶುಕ್ರ ಶು_ಶನಿವಾರ ಶನಿ ಶ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ಕೆಲವು ಕ್ಷಣಗಳು', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ಒಂದು ನಿಮಿಷ', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ಒಂದು ನಿಮಿಷ', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '೨ ನಿಮಿಷ', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '೪೪ ನಿಮಿಷ', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ಒಂದು ಗಂಟೆ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ಒಂದು ಗಂಟೆ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '೨ ಗಂಟೆ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '೫ ಗಂಟೆ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '೨೧ ಗಂಟೆ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ಒಂದು ದಿನ', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ಒಂದು ದಿನ', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '೨ ದಿನ', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ಒಂದು ದಿನ', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '೫ ದಿನ', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '೨೫ ದಿನ', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ಒಂದು ತಿಂಗಳು', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ಒಂದು ತಿಂಗಳು', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ಒಂದು ತಿಂಗಳು', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '೨ ತಿಂಗಳು', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '೨ ತಿಂಗಳು', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '೩ ತಿಂಗಳು', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ಒಂದು ತಿಂಗಳು', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '೫ ತಿಂಗಳು', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ಒಂದು ವರ್ಷ', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '೨ ವರ್ಷ', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ಒಂದು ವರ್ಷ', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '೫ ವರ್ಷ', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', 'prefix');
- assert.equal(moment(0).from(30000), 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ');
- assert.equal(moment().add({d: 5}).fromNow(), '೫ ದಿನ ನಂತರ', '೫ ದಿನ ನಂತರ');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೨:೨೫', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೩:೦೦', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ನಾಳೆ ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೧:೦೦', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ನಿನ್ನೆ ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'ರಾತ್ರಿ', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'ಬೆಳಿಗ್ಗೆ', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ಮಧ್ಯಾಹ್ನ', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'ಸಂಜೆ', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'ಸಂಜೆ', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'ರಾತ್ರಿ', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'ರಾತ್ರಿ', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'ಬೆಳಿಗ್ಗೆ', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ಮಧ್ಯಾಹ್ನ', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'ಸಂಜೆ', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'ಸಂಜೆ', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'ರಾತ್ರಿ', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '೧ ೦೧ ೧ನೇ', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '೧ ೦೧ ೧ನೇ', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '೨ ೦೨ ೨ನೇ', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '೨ ೦೨ ೨ನೇ', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '೩ ೦೩ ೩ನೇ', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ko');
- test('parse', function (assert) {
- var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('parse meridiem', function (assert) {
- var elements = [{
- expression : '1981년 9월 8일 오후 2시 30분',
- inputFormat : 'YYYY[년] M[월] D[일] A h[시] m[분]',
- outputFormat : 'A',
- expected : '오후'
- }, {
- expression : '1981년 9월 8일 오전 2시 30분',
- inputFormat : 'YYYY[년] M[월] D[일] A h[시] m[분]',
- outputFormat : 'A h시',
- expected : '오전 2시'
- }, {
- expression : '14시 30분',
- inputFormat : 'H[시] m[분]',
- outputFormat : 'A',
- expected : '오후'
- }, {
- expression : '오후 4시',
- inputFormat : 'A h[시]',
- outputFormat : 'H',
- expected : '16'
- }], i, l, it, actual;
- for (i = 0, l = elements.length; i < l; ++i) {
- it = elements[i];
- actual = moment(it.expression, it.inputFormat).format(it.outputFormat);
- assert.equal(
- actual,
- it.expected,
- '\'' + it.outputFormat + '\' of \'' + it.expression + '\' must be \'' + it.expected + '\' but was \'' + actual + '\'.'
- );
- }
- });
- test('format', function (assert) {
- var a = [
- ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'],
- ['ddd A h', '일 오후 3'],
- ['M Mo MM MMMM MMM', '2 2일 02 2월 2월'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14일 14'],
- ['d do dddd ddd dd', '0 0일 일요일 일 일'],
- ['DDD DDDo DDDD', '45 45일 045'],
- ['w wo ww', '8 8일 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', '오후 오후'],
- ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'],
- ['LTS', '오후 3:25:50'],
- ['L', '2010.02.14'],
- ['LL', '2010년 2월 14일'],
- ['LLL', '2010년 2월 14일 오후 3:25'],
- ['LLLL', '2010년 2월 14일 일요일 오후 3:25'],
- ['l', '2010.02.14'],
- ['ll', '2010년 2월 14일'],
- ['lll', '2010년 2월 14일 오후 3:25'],
- ['llll', '2010년 2월 14일 일요일 오후 3:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일');
- });
- test('format month', function (assert) {
- var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '몇 초', '44초 = 몇 초');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1분', '45초 = 1분');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1분', '89초 = 1분');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2분', '90초 = 2분');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44분', '44분 = 44분');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '한 시간', '45분 = 한 시간');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '한 시간', '89분 = 한 시간');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2시간', '90분 = 2시간');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5시간', '5시간 = 5시간');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21시간', '21시간 = 21시간');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '하루', '22시간 = 하루');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '하루', '35시간 = 하루');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2일', '36시간 = 2일');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '하루', '하루 = 하루');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5일', '5일 = 5일');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25일', '25일 = 25일');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '한 달', '26일 = 한 달');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '한 달', '30일 = 한 달');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '한 달', '45일 = 한 달');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2달', '46일 = 2달');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2달', '75일 = 2달');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3달', '76일 = 3달');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '한 달', '1달 = 한 달');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5달', '5달 = 5달');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '일 년', '345일 = 일 년');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2년', '548일 = 2년');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '일 년', '일 년 = 일 년');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5년', '5년 = 5년');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), '몇 초 후', 'prefix');
- assert.equal(moment(0).from(30000), '몇 초 전', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), '몇 초 전', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), '몇 초 후', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5일 후', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), '오늘 오후 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), '오늘 오후 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), '오늘 오후 1:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), '내일 오후 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), '오늘 오전 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), '어제 오후 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1일', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1일', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2일', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2일', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3일', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ky');
- test('parse', function (assert) {
- var tests = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'Жекшемби, 14-чү февраль 2010, 15:25:50'],
- ['ddd, hA', 'Жек, 3PM'],
- ['M Mo MM MMMM MMM', '2 2-чи 02 февраль фев'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-чү 14'],
- ['d do dddd ddd dd', '0 0-чү Жекшемби Жек Жк'],
- ['DDD DDDo DDDD', '45 45-чи 045'],
- ['w wo ww', '7 7-чи 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[жылдын] DDDo [күнү]', 'жылдын 45-чи күнү'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 февраль 2010'],
- ['LLL', '14 февраль 2010 15:25'],
- ['LLLL', 'Жекшемби, 14 февраль 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 фев 2010'],
- ['lll', '14 фев 2010 15:25'],
- ['llll', 'Жек, 14 фев 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-чи', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-чи', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-чү', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-чү', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-чи', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-чы', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-чи', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-чи', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-чу', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-чу', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-чи', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-чи', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-чү', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-чү', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-чи', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-чы', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-чи', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-чи', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-чу', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-чы', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-чи', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-чи', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-чү', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-чү', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-чи', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-чы', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-чи', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-чи', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-чу', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-чу', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-чи', '31st');
- });
- test('format month', function (assert) {
- var expected = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Жекшемби Жек Жк_Дүйшөмбү Дүй Дй_Шейшемби Шей Шй_Шаршемби Шар Шр_Бейшемби Бей Бй_Жума Жум Жм_Ишемби Ише Иш'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'бирнече секунд', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'бир мүнөт', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'бир мүнөт', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 мүнөт', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 мүнөт', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'бир саат', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'бир саат', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 саат', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 саат', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 саат', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'бир күн', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'бир күн', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 күн', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'бир күн', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 күн', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 күн', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'бир ай', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'бир ай', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'бир ай', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ай', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ай', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ай', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'бир ай', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ай', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'бир жыл', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 жыл', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'бир жыл', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 жыл', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'бирнече секунд ичинде', 'prefix');
- assert.equal(moment(0).from(30000), 'бирнече секунд мурун', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'бирнече секунд мурун', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'бирнече секунд ичинде', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 күн ичинде', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Бүгүн саат 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Бүгүн саат 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Бүгүн саат 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Эртең саат 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Бүгүн саат 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Кече саат 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [саат] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [саат] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [саат] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Өткен аптанын] dddd [күнү] [саат] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Өткен аптанын] dddd [күнү] [саат] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Өткен аптанын] dddd [күнү] [саат] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-чи', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-чи', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-чи', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-чү', 'Jan 9 2012 should be week 3');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3-чү', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('lb');
- test('parse', function (assert) {
- var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'Sonndeg, 14. Februar 2010, 15:25:50'],
- ['ddd, HH:mm', 'So., 15:25'],
- ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. Sonndeg So. So'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50 Auer'],
- ['L', '14.02.2010'],
- ['LL', '14. Februar 2010'],
- ['LLL', '14. Februar 2010 15:25 Auer'],
- ['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'],
- ['l', '14.2.2010'],
- ['ll', '14. Febr. 2010'],
- ['lll', '14. Febr. 2010 15:25 Auer'],
- ['llll', 'So., 14. Febr. 2010 15:25 Auer']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'e puer Sekonnen', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eng Minutt', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eng Minutt', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minutten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minutten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eng Stonn', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eng Stonn', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stonnen', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stonnen', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stonnen', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'een Dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'een Dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Deeg', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'een Dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Deeg', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Deeg', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ee Mount', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ee Mount', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ee Mount', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Méint', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Méint', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Méint', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ee Mount', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Méint', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ee Joer', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Joer', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ee Joer', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Joer', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'an e puer Sekonnen', 'prefix');
- assert.equal(moment(0).from(30000), 'virun e puer Sekonnen', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'an e puer Sekonnen', 'in a few seconds');
- assert.equal(moment().add({d: 1}).fromNow(), 'an engem Dag', 'in one day');
- assert.equal(moment().add({d: 2}).fromNow(), 'an 2 Deeg', 'in 2 days');
- assert.equal(moment().add({d: 3}).fromNow(), 'an 3 Deeg', 'in 3 days');
- assert.equal(moment().add({d: 4}).fromNow(), 'a 4 Deeg', 'in 4 days');
- assert.equal(moment().add({d: 5}).fromNow(), 'a 5 Deeg', 'in 5 days');
- assert.equal(moment().add({d: 6}).fromNow(), 'a 6 Deeg', 'in 6 days');
- assert.equal(moment().add({d: 7}).fromNow(), 'a 7 Deeg', 'in 7 days');
- assert.equal(moment().add({d: 8}).fromNow(), 'an 8 Deeg', 'in 8 days');
- assert.equal(moment().add({d: 9}).fromNow(), 'an 9 Deeg', 'in 9 days');
- assert.equal(moment().add({d: 10}).fromNow(), 'an 10 Deeg', 'in 10 days');
- assert.equal(moment().add({y: 100}).fromNow(), 'an 100 Joer', 'in 100 years');
- assert.equal(moment().add({y: 400}).fromNow(), 'a 400 Joer', 'in 400 years');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Haut um 12:00 Auer', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Haut um 12:25 Auer', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Haut um 13:00 Auer', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Muer um 12:00 Auer', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Haut um 11:00 Auer', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gëschter um 12:00 Auer', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [um] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [um] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [um] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, weekday, datestring;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday)
- weekday = parseInt(m.format('d'), 10);
- datestring = (weekday === 2 || weekday === 4 ? '[Leschten] dddd [um] LT' : '[Leschte] dddd [um] LT');
- assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1.', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2.', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('lo');
- test('parse', function (assert) {
- var tests = 'ມັງກອນ ມັງກອນ_ກຸມພາ ກຸມພາ_ມີນາ ມີນາ_ເມສາ ເມສາ_ພຶດສະພາ ພຶດສະພາ_ມິຖຸນາ ມິຖຸນາ_ກໍລະກົດ ກໍລະກົດ_ສິງຫາ ສິງຫາ_ກັນຍາ ກັນຍາ_ຕຸລາ ຕຸລາ_ພະຈິກ ພະຈິກ_ທັນວາ ທັນວາ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'ອາທິດ, ກຸມພາ ທີ່14 2010, 3:25:50 ຕອນແລງ'],
- ['ddd, hA', 'ທິດ, 3ຕອນແລງ'],
- ['M Mo MM MMMM MMM', '2 ທີ່2 02 ກຸມພາ ກຸມພາ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 ທີ່14 14'],
- ['d do dddd ddd dd', '0 ທີ່0 ອາທິດ ທິດ ທ'],
- ['DDD DDDo DDDD', '45 ທີ່45 045'],
- ['w wo ww', '8 ທີ່8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'ຕອນແລງ ຕອນແລງ'],
- ['[ວັນ]DDDo [ຂອງປີ]', 'ວັນທີ່45 ຂອງປີ'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 ກຸມພາ 2010'],
- ['LLL', '14 ກຸມພາ 2010 15:25'],
- ['LLLL', 'ວັນອາທິດ 14 ກຸມພາ 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 ກຸມພາ 2010'],
- ['lll', '14 ກຸມພາ 2010 15:25'],
- ['llll', 'ວັນທິດ 14 ກຸມພາ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), 'ທີ່1', 'ທີ່1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), 'ທີ່2', 'ທີ່2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), 'ທີ່3', 'ທີ່3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), 'ທີ່4', 'ທີ່4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), 'ທີ່5', 'ທີ່5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), 'ທີ່6', 'ທີ່6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), 'ທີ່7', 'ທີ່7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), 'ທີ່8', 'ທີ່8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), 'ທີ່9', 'ທີ່9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), 'ທີ່10', 'ທີ່10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), 'ທີ່11', 'ທີ່11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), 'ທີ່12', 'ທີ່12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), 'ທີ່13', 'ທີ່13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), 'ທີ່14', 'ທີ່14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), 'ທີ່15', 'ທີ່15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), 'ທີ່16', 'ທີ່16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), 'ທີ່17', 'ທີ່17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), 'ທີ່18', 'ທີ່18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), 'ທີ່19', 'ທີ່19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), 'ທີ່20', 'ທີ່20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), 'ທີ່21', 'ທີ່21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), 'ທີ່22', 'ທີ່22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), 'ທີ່23', 'ທີ່23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), 'ທີ່24', 'ທີ່24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), 'ທີ່25', 'ທີ່25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), 'ທີ່26', 'ທີ່26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), 'ທີ່27', 'ທີ່27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), 'ທີ່28', 'ທີ່28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), 'ທີ່29', 'ທີ່29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), 'ທີ່30', 'ທີ່30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), 'ທີ່31', 'ທີ່31');
- });
- test('format month', function (assert) {
- var expected = 'ມັງກອນ ມັງກອນ_ກຸມພາ ກຸມພາ_ມີນາ ມີນາ_ເມສາ ເມສາ_ພຶດສະພາ ພຶດສະພາ_ມິຖຸນາ ມິຖຸນາ_ກໍລະກົດ ກໍລະກົດ_ສິງຫາ ສິງຫາ_ກັນຍາ ກັນຍາ_ຕຸລາ ຕຸລາ_ພະຈິກ ພະຈິກ_ທັນວາ ທັນວາ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ອາທິດ ທິດ ທ_ຈັນ ຈັນ ຈ_ອັງຄານ ອັງຄານ ອຄ_ພຸດ ພຸດ ພ_ພະຫັດ ພະຫັດ ພຫ_ສຸກ ສຸກ ສກ_ເສົາ ເສົາ ສ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ບໍ່ເທົ່າໃດວິນາທີ', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 ນາທີ', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 ນາທີ', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 ນາທີ', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 ນາທີ', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 ຊົ່ວໂມງ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 ຊົ່ວໂມງ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ຊົ່ວໂມງ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ຊົ່ວໂມງ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ຊົ່ວໂມງ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 ມື້', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 ມື້', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ມື້', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 ມື້', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ມື້', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ມື້', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 ເດືອນ', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 ເດືອນ', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 ເດືອນ', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ເດືອນ', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ເດືອນ', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ເດືອນ', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 ເດືອນ', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ເດືອນ', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 ປີ', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ປີ', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 ປີ', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ປີ', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ອີກ ບໍ່ເທົ່າໃດວິນາທີ', 'prefix');
- assert.equal(moment(0).from(30000), 'ບໍ່ເທົ່າໃດວິນາທີຜ່ານມາ', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ບໍ່ເທົ່າໃດວິນາທີຜ່ານມາ', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ອີກ ບໍ່ເທົ່າໃດວິນາທີ', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'ອີກ 5 ມື້', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ມື້ນີ້ເວລາ 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ມື້ນີ້ເວລາ 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'ມື້ນີ້ເວລາ 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ມື້ອື່ນເວລາ 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ມື້ນີ້ເວລາ 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ມື້ວານນີ້ເວລາ 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[ວັນ]dddd[ໜ້າເວລາ] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ວັນ]dddd[ໜ້າເວລາ] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ວັນ]dddd[ໜ້າເວລາ] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 ທີ່1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 ທີ່1', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 ທີ່2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 ທີ່2', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 ທີ່3', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('lt');
- test('parse', function (assert) {
- var tests = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sek, 3PM'],
- ['M Mo MM MMMM MMM', '2 2-oji 02 vasaris vas'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-oji 14'],
- ['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'],
- ['DDD DDDo DDDD', '45 45-oji 045'],
- ['w wo ww', '6 6-oji 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['DDDo [metų diena]', '45-oji metų diena'],
- ['LTS', '15:25:50'],
- ['L', '2010-02-14'],
- ['LL', '2010 m. vasario 14 d.'],
- ['LLL', '2010 m. vasario 14 d., 15:25 val.'],
- ['LLLL', '2010 m. vasario 14 d., sekmadienis, 15:25 val.'],
- ['l', '2010-02-14'],
- ['ll', '2010 m. vasario 14 d.'],
- ['lll', '2010 m. vasario 14 d., 15:25 val.'],
- ['llll', '2010 m. vasario 14 d., Sek, 15:25 val.']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-oji', '1-oji');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-oji', '11-oji');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-oji', '21-oji');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-oji', '31-oji');
- });
- test('format month', function (assert) {
- var expected = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('format week on US calendar', function (assert) {
- // Tests, whether the weekday names are correct, even if the week does not start on Monday
- moment.updateLocale('lt', {week: {dow: 0, doy: 6}});
- var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- moment.updateLocale('lt', null);
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kelios sekundės', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutė', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutė', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutės', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 10}), true), '10 minučių', '10 minutes = 10 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 11}), true), '11 minučių', '11 minutes = 11 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 19}), true), '19 minučių', '19 minutes = 19 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 20}), true), '20 minučių', '20 minutes = 20 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutės', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'valanda', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'valanda', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 valandos', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 valandos', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 10}), true), '10 valandų', '10 hours = 10 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 valandos', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienos', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienos', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 10}), true), '10 dienų', '10 days = 10 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienos', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mėnuo', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mėnuo', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mėnuo', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mėnesiai', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mėnesiai', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mėnesiai', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mėnuo', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mėnesiai', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 10}), true), '10 mėnesių', '10 months = 10 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'metai', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 metai', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'metai', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 metai', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'po kelių sekundžių', 'prefix');
- assert.equal(moment(0).from(30000), 'prieš kelias sekundes', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'prieš kelias sekundes', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'po kelių sekundžių', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'po 5 dienų', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Šiandien 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Šiandien 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Šiandien 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Rytoj 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šiandien 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52-oji', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1-oji', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1-oji', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2-oji', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2-oji', 'Jan 15 2012 should be week 2');
- });
- test('month cases', function (assert) {
- assert.equal(moment([2015, 4, 1]).format('LL'), '2015 m. gegužės 1 d.', 'uses format instead of standalone form');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('lv');
- test('parse', function (assert) {
- var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'],
- ['ddd, hA', 'Sv, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010.'],
- ['LL', '2010. gada 14. februāris'],
- ['LLL', '2010. gada 14. februāris, 15:25'],
- ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'],
- ['l', '14.2.2010.'],
- ['ll', '2010. gada 14. feb'],
- ['lll', '2010. gada 14. feb, 15:25'],
- ['llll', '2010. gada 14. feb, Sv, 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- // Includes testing the cases of withoutSuffix = true and false.
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'dažas sekundes', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), false), 'pirms dažām sekundēm', '44 seconds with suffix = seconds ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minūte', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), false), 'pirms minūtes', '45 seconds with suffix = a minute ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minūte', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: -89}), false), 'pēc minūtes', '89 seconds with suffix/prefix = in a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minūtes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), false), 'pirms 2 minūtēm', '90 seconds with suffix = 2 minutes ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minūtes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), false), 'pirms 44 minūtēm', '44 minutes with suffix = 44 minutes ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'stunda', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), false), 'pirms stundas', '45 minutes with suffix = an hour ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'stunda', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 stundas', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: -90}), false), 'pēc 2 stundām', '90 minutes with suffix = in 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 stundas', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), false), 'pirms 5 stundām', '5 hours with suffix = 5 hours ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 stunda', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), false), 'pirms 21 stundas', '21 hours with suffix = 21 hours ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), false), 'pirms dienas', '22 hours with suffix = a day ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienas', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), false), 'pirms 2 dienām', '36 hours with suffix = 2 days ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienas', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), false), 'pirms 5 dienām', '5 days with suffix = 5 days ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienas', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), false), 'pirms 25 dienām', '25 days with suffix = 25 days ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mēnesis', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), false), 'pirms mēneša', '26 days with suffix = a month ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mēnesis', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mēnesis', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mēneši', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), false), 'pirms 2 mēnešiem', '46 days with suffix = 2 months ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mēneši', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mēneši', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), false), 'pirms 3 mēnešiem', '76 days with suffix = 3 months ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mēnesis', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mēneši', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), false), 'pirms 5 mēnešiem', '5 months with suffix = 5 months ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'gads', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), false), 'pirms gada', '345 days with suffix = a year ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 gadi', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), false), 'pirms 2 gadiem', '548 days with suffix = 2 years ago');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'gads', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 gadi', '5 years = 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), false), 'pirms 5 gadiem', '5 years with suffix = 5 years ago');
- // test that numbers ending with 1 are singular except for when they end with 11 in which case they are plural
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 11}), true), '11 gadi', '11 years = 11 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 gads', '21 year = 21 year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 211}), true), '211 gadi', '211 years = 211 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 221}), false), 'pirms 221 gada', '221 year with suffix = 221 years ago');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'pēc dažām sekundēm', 'prefix');
- assert.equal(moment(0).from(30000), 'pirms dažām sekundēm', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'pirms dažām sekundēm', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'pēc dažām sekundēm', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'pēc 5 dienām', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Šodien pulksten 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Šodien pulksten 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Šodien pulksten 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Rīt pulksten 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šodien pulksten 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar pulksten 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('me');
- test('parse', function (assert) {
- var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'],
- ['ddd, hA', 'ned., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. nedjelja ned. ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 15:25'],
- ['LLLL', 'nedjelja, 14. februar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb. 2010'],
- ['lll', '14. feb. 2010 15:25'],
- ['llll', 'ned., 14. feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix');
- assert.equal(moment(0).from(30000), 'prije nekoliko sekundi', 'prefix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'prije nekoliko sekundi', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'danas u 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'sjutra u 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[u] dddd [u] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- var lastWeekDay = [
- '[prošle] [nedjelje] [u] LT',
- '[prošlog] [ponedjeljka] [u] LT',
- '[prošlog] [utorka] [u] LT',
- '[prošle] [srijede] [u] LT',
- '[prošlog] [četvrtka] [u] LT',
- '[prošlog] [petka] [u] LT',
- '[prošle] [subote] [u] LT'
- ];
- return lastWeekDay[d.day()];
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- // Monday is the first day of the week.
- // The week that contains Jan 1st is the first week of the year.
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('mi');
- test('parse', function (assert) {
- var tests = 'Kohi-tāte Kohi_Hui-tanguru Hui_Poutū-te-rangi Pou_Paenga-whāwhā Pae_Haratua Hara_Pipiri Pipi_Hōngoingoi Hōngoi_Here-turi-kōkā Here_Mahuru Mahu_Whiringa-ā-nuku Whi-nu_Whiringa-ā-rangi Whi-ra_Hakihea Haki'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Rātapu, Hui-tanguru 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'Ta, 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 Hui-tanguru Hui'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd dd', '0 0º Rātapu Ta Ta'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '6 6º 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 Hui-tanguru 2010'],
- ['LLL', '14 Hui-tanguru 2010 i 15:25'],
- ['LLLL', 'Rātapu, 14 Hui-tanguru 2010 i 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Hui 2010'],
- ['lll', '14 Hui 2010 i 15:25'],
- ['llll', 'Ta, 14 Hui 2010 i 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'Kohi-tāte Kohi_Hui-tanguru Hui_Poutū-te-rangi Pou_Paenga-whāwhā Pae_Haratua Hara_Pipiri Pipi_Hōngoingoi Hōngoi_Here-turi-kōkā Here_Mahuru Mahu_Whiringa-ā-nuku Whi-nu_Whiringa-ā-rangi Whi-ra_Hakihea Haki'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Rātapu Ta Ta_Mane Ma Ma_Tūrei Tū Tū_Wenerei We We_Tāite Tāi Tāi_Paraire Pa Pa_Hātarei Hā Hā'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'te hēkona ruarua', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'he meneti', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'he meneti', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 meneti', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 meneti', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'te haora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'te haora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 haora', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 haora', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 haora', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'he ra', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'he ra', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ra', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'he ra', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ra', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ra', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'he marama', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'he marama', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'he marama', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 marama', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 marama', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 marama', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'he marama', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 marama', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'he tau', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tau', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'he tau', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tau', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'i roto i te hēkona ruarua', 'prefix');
- assert.equal(moment(0).from(30000), 'te hēkona ruarua i mua', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'te hēkona ruarua i mua', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'i roto i te hēkona ruarua', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'i roto i 5 ra', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'i teie mahana, i 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'i teie mahana, i 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'i teie mahana, i 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'apopo i 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'i teie mahana, i 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'inanahi i 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [i] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [i] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [i] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [whakamutunga i] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [whakamutunga i] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [whakamutunga i] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('mk');
- test('parse', function (assert) {
- var tests = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, H:mm:ss', 'недела, февруари 14-ти 2010, 15:25:50'],
- ['ddd, hA', 'нед, 3PM'],
- ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-ти 14'],
- ['d do dddd ddd dd', '0 0-ев недела нед нe'],
- ['DDD DDDo DDDD', '45 45-ти 045'],
- ['w wo ww', '7 7-ми 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45-ти day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 февруари 2010'],
- ['LLL', '14 февруари 2010 15:25'],
- ['LLLL', 'недела, 14 февруари 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 фев 2010'],
- ['lll', '14 фев 2010 15:25'],
- ['llll', 'нед, 14 фев 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви');
- });
- test('format month', function (assert) {
- var expected = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре ср_четврток чет че_петок пет пе_сабота саб сa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'неколку секунди', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минути', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минути', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часа', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 часа', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ден', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ден', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дена', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ден', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дена', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дена', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеци', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеци', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеци', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеци', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'година', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 години', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'година', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 години', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'после неколку секунди', 'prefix');
- assert.equal(moment(0).from(30000), 'пред неколку секунди', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'пред неколку секунди', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'после неколку секунди', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'после 5 дена', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Денес во 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Денес во 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Денес во 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Утре во 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Денес во 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера во 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[Во] dddd [во] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Во] dddd [во] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Во] dddd [во] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- case 3:
- case 6:
- return '[Изминатата] dddd [во] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[Изминатиот] dddd [во] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ml');
- test('parse', function (assert) {
- var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss -നു', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'],
- ['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 3 -നു'],
- ['M Mo MM MMMM MMM', '2 2 02 ഫെബ്രുവരി ഫെബ്രു.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 ഞായറാഴ്ച ഞായർ ഞാ'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'],
- ['LTS', 'ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'],
- ['L', '14/02/2010'],
- ['LL', '14 ഫെബ്രുവരി 2010'],
- ['LLL', '14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'],
- ['LLLL', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'],
- ['l', '14/2/2010'],
- ['ll', '14 ഫെബ്രു. 2010'],
- ['lll', '14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'],
- ['llll', 'ഞായർ, 14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'അൽപ നിമിഷങ്ങൾ', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ഒരു മിനിറ്റ്', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ഒരു മിനിറ്റ്', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 മിനിറ്റ്', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 മിനിറ്റ്', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ഒരു മണിക്കൂർ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ഒരു മണിക്കൂർ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 മണിക്കൂർ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 മണിക്കൂർ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 മണിക്കൂർ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ഒരു ദിവസം', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ഒരു ദിവസം', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ദിവസം', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ഒരു ദിവസം', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ദിവസം', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ദിവസം', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ഒരു മാസം', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ഒരു മാസം', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ഒരു മാസം', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 മാസം', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 മാസം', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 മാസം', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ഒരു മാസം', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 മാസം', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ഒരു വർഷം', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 വർഷം', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ഒരു വർഷം', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 വർഷം', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'prefix');
- assert.equal(moment(0).from(30000), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്');
- assert.equal(moment().add({d: 5}).fromNow(), '5 ദിവസം കഴിഞ്ഞ്', '5 ദിവസം കഴിഞ്ഞ്');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ഇന്ന് ഉച്ച കഴിഞ്ഞ് 12:00 -നു', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ഇന്ന് ഉച്ച കഴിഞ്ഞ് 12:25 -നു', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'ഇന്ന് ഉച്ച കഴിഞ്ഞ് 3:00 -നു', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'നാളെ ഉച്ച കഴിഞ്ഞ് 12:00 -നു', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ഇന്ന് രാവിലെ 11:00 -നു', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ഇന്നലെ ഉച്ച കഴിഞ്ഞ് 12:00 -നു', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'രാത്രി', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'രാവിലെ', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ഉച്ച കഴിഞ്ഞ്', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'വൈകുന്നേരം', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'വൈകുന്നേരം', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'രാത്രി', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'രാത്രി', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'രാവിലെ', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ഉച്ച കഴിഞ്ഞ്', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'വൈകുന്നേരം', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'വൈകുന്നേരം', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'രാത്രി', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('mr');
- test('parse', function (assert) {
- var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss वाजता', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५:५० वाजता'],
- ['ddd, a h वाजता', 'रवि, दुपारी ३ वाजता'],
- ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवारी फेब्रु.'],
- ['YYYY YY', '२०१० १०'],
- ['D Do DD', '१४ १४ १४'],
- ['d do dddd ddd dd', '० ० रविवार रवि र'],
- ['DDD DDDo DDDD', '४५ ४५ ०४५'],
- ['w wo ww', '८ ८ ०८'],
- ['h hh', '३ ०३'],
- ['H HH', '१५ १५'],
- ['m mm', '२५ २५'],
- ['s ss', '५० ५०'],
- ['a A', 'दुपारी दुपारी'],
- ['LTS', 'दुपारी ३:२५:५० वाजता'],
- ['L', '१४/०२/२०१०'],
- ['LL', '१४ फेब्रुवारी २०१०'],
- ['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'],
- ['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'],
- ['l', '१४/२/२०१०'],
- ['ll', '१४ फेब्रु. २०१०'],
- ['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'],
- ['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१');
- });
- test('format month', function (assert) {
- var expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'काही सेकंद', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनिट', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनिट', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनिटे', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनिटे', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक तास', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक तास', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ तास', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ तास', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ तास', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिवस', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिवस', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिवस', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिवस', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिवस', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिवस', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महिना', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महिना', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महिना', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महिने', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महिने', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महिने', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महिना', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महिने', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक वर्ष', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ वर्षे', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक वर्ष', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ वर्षे', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'काही सेकंदांमध्ये', 'prefix');
- assert.equal(moment(0).from(30000), 'काही सेकंदांपूर्वी', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'काही सेकंदांपूर्वी', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'काही सेकंदांमध्ये', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '५ दिवसांमध्ये', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'आज दुपारी १२:०० वाजता', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'आज दुपारी १२:२५ वाजता', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'आज दुपारी ३:०० वाजता', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'उद्या दुपारी १२:०० वाजता', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज दुपारी ११:०० वाजता', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'काल दुपारी १२:०० वाजता', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'रात्री', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सकाळी', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दुपारी', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'सायंकाळी', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'सायंकाळी', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात्री', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'रात्री', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सकाळी', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दुपारी', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'सायंकाळी', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'सायंकाळी', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात्री', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ms-my');
- test('parse', function (assert) {
- var i,
- tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'],
- ['ddd, hA', 'Ahd, 3petang'],
- ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'petang petang'],
- ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'],
- ['LTS', '15.25.50'],
- ['L', '14/02/2010'],
- ['LL', '14 Februari 2010'],
- ['LLL', '14 Februari 2010 pukul 15.25'],
- ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 pukul 15.25'],
- ['llll', 'Ahd, 14 Feb 2010 pukul 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var i,
- expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa saat', '44 saat = beberapa saat');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix');
- assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat');
- assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hari ini pukul 12.00', 'hari ini pada waktu yang sama');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 12.25', 'Sekarang tambah 25 minit');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 13.00', 'Sekarang tambah 1 jam');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 12.00', 'esok pada waktu yang sama');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 11.00', 'Sekarang tolak 1 jam');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 12.00', 'kelmarin pada waktu yang sama');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari waktu sekarang');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ms');
- test('parse', function (assert) {
- var i,
- tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'],
- ['ddd, hA', 'Ahd, 3petang'],
- ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'petang petang'],
- ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'],
- ['LTS', '15.25.50'],
- ['L', '14/02/2010'],
- ['LL', '14 Februari 2010'],
- ['LLL', '14 Februari 2010 pukul 15.25'],
- ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'],
- ['l', '14/2/2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 pukul 15.25'],
- ['llll', 'Ahd, 14 Feb 2010 pukul 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var i,
- expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa saat', '44 saat = beberapa saat');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix');
- assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat');
- assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hari ini pukul 12.00', 'hari ini pada waktu yang sama');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 12.25', 'Sekarang tambah 25 minit');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 13.00', 'Sekarang tambah 1 jam');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 12.00', 'esok pada waktu yang sama');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 11.00', 'Sekarang tolak 1 jam');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 12.00', 'kelmarin pada waktu yang sama');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari waktu sekarang');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('my');
- test('parse', function (assert) {
- var tests = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'),
- i;
- function equalTest (input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'တနင်္ဂနွေ, ဖေဖော်ဝါရီ ၁၄ ၂၀၁၀, ၃:၂၅:၅၀ pm'],
- ['ddd, hA', 'နွေ, ၃PM'],
- ['M Mo MM MMMM MMM', '၂ ၂ ၀၂ ဖေဖော်ဝါရီ ဖေ'],
- ['YYYY YY', '၂၀၁၀ ၁၀'],
- ['D Do DD', '၁၄ ၁၄ ၁၄'],
- ['d do dddd ddd dd', '၀ ၀ တနင်္ဂနွေ နွေ နွေ'],
- ['DDD DDDo DDDD', '၄၅ ၄၅ ၀၄၅'],
- ['w wo ww', '၆ ၆ ၀၆'],
- ['h hh', '၃ ၀၃'],
- ['H HH', '၁၅ ၁၅'],
- ['m mm', '၂၅ ၂၅'],
- ['s ss', '၅၀ ၅၀'],
- ['a A', 'pm PM'],
- ['[နှစ်၏] DDDo [ရက်မြောက်]', 'နှစ်၏ ၄၅ ရက်မြောက်'],
- ['LTS', '၁၅:၂၅:၅၀'],
- ['L', '၁၄/၀၂/၂၀၁၀'],
- ['LL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀'],
- ['LLL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'],
- ['LLLL', 'တနင်္ဂနွေ ၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'],
- ['l', '၁၄/၂/၂၀၁၀'],
- ['ll', '၁၄ ဖေ ၂၀၁၀'],
- ['lll', '၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'],
- ['llll', 'နွေ ၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '၁', '၁');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '၂', '၂');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '၃', '၃');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '၄', '၄');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '၅', '၅');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '၆', '၆');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '၇', '၇');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '၈', '၈');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '၉', '၉');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '၁၀', '၁၀');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '၁၁', '၁၁');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '၁၂', '၁၂');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '၁၃', '၁၃');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '၁၄', '၁၄');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '၁၅', '၁၅');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '၁၆', '၁၆');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '၁၇', '၁၇');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '၁၈', '၁၈');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '၁၉', '၁၉');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '၂၀', '၂၀');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '၂၁', '၂၁');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '၂၂', '၂၂');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '၂၃', '၂၃');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '၂၄', '၂၄');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '၂၅', '၂၅');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '၂၆', '၂၆');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '၂၇', '၂၇');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '၂၈', '၂၈');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '၂၉', '၂၉');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '၃၀', '၃၀');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '၃၁', '၃၁');
- });
- test('format month', function (assert) {
- var expected = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ ဂါ ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 44
- }), true), 'စက္ကန်.အနည်းငယ်', '၄၄ စက္ကန်. = စက္ကန်.အနည်းငယ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 45
- }), true), 'တစ်မိနစ်', '၄၅ စက္ကန်. = တစ်မိနစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 89
- }), true), 'တစ်မိနစ်', '၈၉ စက္ကန်. = တစ်မိနစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- s: 90
- }), true), '၂ မိနစ်', '၉၀ စက္ကန်. = ၂ မိနစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 44
- }), true), '၄၄ မိနစ်', '၄၄ မိနစ် = ၄၄ မိနစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 45
- }), true), 'တစ်နာရီ', '၄၅ မိနစ် = ၁ နာရီ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 89
- }), true), 'တစ်နာရီ', '၈၉ မိနစ် = တစ်နာရီ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- m: 90
- }), true), '၂ နာရီ', 'မိနစ် ၉၀= ၂ နာရီ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 5
- }), true), '၅ နာရီ', '၅ နာရီ= ၅ နာရီ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 21
- }), true), '၂၁ နာရီ', '၂၁ နာရီ =၂၁ နာရီ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 22
- }), true), 'တစ်ရက်', '၂၂ နာရီ =တစ်ရက်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 35
- }), true), 'တစ်ရက်', '၃၅ နာရီ =တစ်ရက်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- h: 36
- }), true), '၂ ရက်', '၃၆ နာရီ = ၂ ရက်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 1
- }), true), 'တစ်ရက်', '၁ ရက်= တစ်ရက်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 5
- }), true), '၅ ရက်', '၅ ရက် = ၅ ရက်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 25
- }), true), '၂၅ ရက်', '၂၅ ရက်= ၂၅ ရက်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 26
- }), true), 'တစ်လ', '၂၆ ရက် = တစ်လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 30
- }), true), 'တစ်လ', 'ရက် ၃၀ = တစ်လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 43
- }), true), 'တစ်လ', '၄၃ ရက် = တစ်လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 46
- }), true), '၂ လ', '၄၆ ရက် = ၂ လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 74
- }), true), '၂ လ', '၇၅ ရက်= ၂ လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 76
- }), true), '၃ လ', '၇၆ ရက် = ၃ လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- M: 1
- }), true), 'တစ်လ', '၁ လ = တစ်လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- M: 5
- }), true), '၅ လ', '၅ လ = ၅ လ');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 345
- }), true), 'တစ်နှစ်', '၃၄၅ ရက် = တစ်နှစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- d: 548
- }), true), '၂ နှစ်', '၅၄၈ ရက် = ၂ နှစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- y: 1
- }), true), 'တစ်နှစ်', '၁ နှစ် = တစ်နှစ်');
- assert.equal(start.from(moment([2007, 1, 28]).add({
- y: 5
- }), true), '၅ နှစ်', '၅ နှစ် = ၅ နှစ်');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'prefix');
- assert.equal(moment(0).from(30000), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'ယခုမှစပြီး အတိတ်တွင်ဖော်ပြသလိုဖော်ပြမည်');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({
- s: 30
- }).fromNow(), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'လာမည့် စက္ကန်.အနည်းငယ် မှာ');
- assert.equal(moment().add({
- d: 5
- }).fromNow(), 'လာမည့် ၅ ရက် မှာ', 'လာမည့် ၅ ရက် မှာ');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ယနေ. ၁၂:၀၀ မှာ', 'ယနေ. ဒီအချိန်');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ယနေ. ၁၂:၂၅ မှာ', 'ယခုမှ ၂၅ မိနစ်ပေါင်းထည့်');
- assert.equal(moment(a).add({h: 1}).calendar(), 'ယနေ. ၁၃:၀၀ မှာ', 'ယခုမှ ၁ နာရီပေါင်းထည့်');
- assert.equal(moment(a).add({d: 1}).calendar(), 'မနက်ဖြန် ၁၂:၀၀ မှာ', 'မနက်ဖြန် ဒီအချိန်');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ယနေ. ၁၁:၀၀ မှာ', 'ယခုမှ ၁ နာရီနှုတ်');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'မနေ.က ၁၂:၀၀ မှာ', 'မနေ.က ဒီအချိန်');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({
- d: i
- });
- assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({
- d: i
- });
- assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({
- w: 1
- }),
- weeksFromNow = moment().add({
- w: 1
- });
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'လွန်ခဲ့သော ၁ ပတ်က');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၁ ပတ်အတွင်း');
- weeksAgo = moment().subtract({
- w: 2
- });
- weeksFromNow = moment().add({
- w: 2
- });
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '၂ ပတ် အရင်က');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၂ ပတ် အတွင်း');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '၅၂ ၅၂ ၅၂', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('nb');
- test('parse', function (assert) {
- var tests = 'januar jan._februar feb._mars mars_april april_mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'søndag, februar 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'sø., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. søndag sø. sø'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[den] DDDo [dagen i året]', 'den 45. dagen i året'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 kl. 15:25'],
- ['LLLL', 'søndag 14. februar 2010 kl. 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb. 2010'],
- ['lll', '14. feb. 2010 kl. 15:25'],
- ['llll', 'sø. 14. feb. 2010 kl. 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan._februar feb._mars mars_april april_mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'søndag sø. sø_mandag ma. ma_tirsdag ti. ti_onsdag on. on_torsdag to. to_fredag fr. fr_lørdag lø. lø'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'noen sekunder', '44 sekunder = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ett minutt', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ett minutt', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dager', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dager', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dager', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en måned', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en måned', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 måneder', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'om noen sekunder', 'prefix');
- assert.equal(moment(0).from(30000), 'noen sekunder siden', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'noen sekunder siden', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'om noen sekunder', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dager', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'i dag kl. 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'i dag kl. 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'i dag kl. 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'i morgen kl. 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'i dag kl. 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'i går kl. 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ne');
- test('parse', function (assert) {
- var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, aको h:mm:ss बजे', 'आइतबार, १४ फेब्रुवरी २०१०, दिउँसोको ३:२५:५० बजे'],
- ['ddd, aको h बजे', 'आइत., दिउँसोको ३ बजे'],
- ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवरी फेब्रु.'],
- ['YYYY YY', '२०१० १०'],
- ['D Do DD', '१४ १४ १४'],
- ['d do dddd ddd dd', '० ० आइतबार आइत. आ.'],
- ['DDD DDDo DDDD', '४५ ४५ ०४५'],
- ['w wo ww', '८ ८ ०८'],
- ['h hh', '३ ०३'],
- ['H HH', '१५ १५'],
- ['m mm', '२५ २५'],
- ['s ss', '५० ५०'],
- ['a A', 'दिउँसो दिउँसो'],
- ['LTS', 'दिउँसोको ३:२५:५० बजे'],
- ['L', '१४/०२/२०१०'],
- ['LL', '१४ फेब्रुवरी २०१०'],
- ['LLL', '१४ फेब्रुवरी २०१०, दिउँसोको ३:२५ बजे'],
- ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, दिउँसोको ३:२५ बजे'],
- ['l', '१४/२/२०१०'],
- ['ll', '१४ फेब्रु. २०१०'],
- ['lll', '१४ फेब्रु. २०१०, दिउँसोको ३:२५ बजे'],
- ['llll', 'आइत., १४ फेब्रु. २०१०, दिउँसोको ३:२५ बजे']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१');
- });
- test('format month', function (assert) {
- var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'आइतबार आइत. आ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मं._बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'केही क्षण', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनेट', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनेट', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनेट', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनेट', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक घण्टा', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक घण्टा', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ घण्टा', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ घण्टा', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ घण्टा', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिन', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिन', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिन', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिन', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिन', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिन', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महिना', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महिना', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महिना', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महिना', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महिना', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महिना', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महिना', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महिना', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक बर्ष', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ बर्ष', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक बर्ष', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ बर्ष', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'केही क्षणमा', 'prefix');
- assert.equal(moment(0).from(30000), 'केही क्षण अगाडि', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'केही क्षण अगाडि', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'केही क्षणमा', 'केही क्षणमा');
- assert.equal(moment().add({d: 5}).fromNow(), '५ दिनमा', '५ दिनमा');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'आज दिउँसोको १२:०० बजे', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'आज दिउँसोको १२:२५ बजे', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'आज दिउँसोको १:०० बजे', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'भोलि दिउँसोको १२:०० बजे', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज बिहानको ११:०० बजे', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'हिजो दिउँसोको १२:०० बजे', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'राति', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'बिहान', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दिउँसो', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'साँझ', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'साँझ', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'राति', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'राति', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'बिहान', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दिउँसो', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'साँझ', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'साँझ', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'राति', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '५३ ५३ ५३', 'Dec 26 2011 should be week 53');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '१ ०१ १', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '२ ०२ २', 'Jan 9 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('nl-be');
- test('parse', function (assert) {
- var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'],
- ['ddd, HH', 'zo., 15'],
- ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14de 14'],
- ['d do dddd ddd dd', '0 0de zondag zo. Zo'],
- ['DDD DDDo DDDD', '45 45ste 045'],
- ['w wo ww', '6 6de 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45ste day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 februari 2010'],
- ['LLL', '14 februari 2010 15:25'],
- ['LLLL', 'zondag 14 februari 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 feb. 2010'],
- ['lll', '14 feb. 2010 15:25'],
- ['llll', 'zo. 14 feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste');
- });
- test('format month', function (assert) {
- var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'een paar seconden', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'één minuut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'één minuut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'één uur', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'één uur', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uur', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uur', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uur', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'één dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'één dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'één dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'één maand', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'één maand', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'één maand', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maanden', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maanden', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maanden', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'één maand', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maanden', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'één jaar', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'één jaar', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix');
- assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'een paar seconden geleden', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'over een paar seconden', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'over 5 dagen', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'vandaag om 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'vandaag om 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'vandaag om 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'morgen om 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'vandaag om 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'gisteren om 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('month abbreviation', function (assert) {
- assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot');
- assert.equal(moment([2012, 5, 23]).unix(), moment('23-jun-2012', 'D-MMM-YYYY').unix(), 'parse month abbreviation surrounded by dashes without dot');
- assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot');
- assert.equal(moment([2012, 5, 23]).unix(), moment('23 jun. 2012', 'D MMM YYYY').unix(), 'parse month abbreviation not surrounded by dashes with dot');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('nl');
- test('parse', function (assert) {
- var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'],
- ['ddd, HH', 'zo., 15'],
- ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14de 14'],
- ['d do dddd ddd dd', '0 0de zondag zo. Zo'],
- ['DDD DDDo DDDD', '45 45ste 045'],
- ['w wo ww', '6 6de 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45ste day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14-02-2010'],
- ['LL', '14 februari 2010'],
- ['LLL', '14 februari 2010 15:25'],
- ['LLLL', 'zondag 14 februari 2010 15:25'],
- ['l', '14-2-2010'],
- ['ll', '14 feb. 2010'],
- ['lll', '14 feb. 2010 15:25'],
- ['llll', 'zo. 14 feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste');
- });
- test('format month', function (assert) {
- var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'een paar seconden', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'één minuut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'één minuut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'één uur', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'één uur', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uur', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uur', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uur', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'één dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'één dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'één dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'één maand', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'één maand', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'één maand', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maanden', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maanden', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maanden', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'één maand', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maanden', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'één jaar', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'één jaar', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix');
- assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'een paar seconden geleden', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'over een paar seconden', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'over 5 dagen', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'vandaag om 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'vandaag om 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'vandaag om 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'morgen om 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'vandaag om 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'gisteren om 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('month abbreviation', function (assert) {
- assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot');
- assert.equal(moment([2012, 5, 23]).unix(), moment('23-jun-2012', 'D-MMM-YYYY').unix(), 'parse month abbreviation surrounded by dashes without dot');
- assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot');
- assert.equal(moment([2012, 5, 23]).unix(), moment('23 jun. 2012', 'D MMM YYYY').unix(), 'parse month abbreviation not surrounded by dashes with dot');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('nn');
- test('parse', function (assert) {
- var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'sundag, februar 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'sun, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. sundag sun su'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 kl. 15:25'],
- ['LLLL', 'sundag 14. februar 2010 kl. 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb 2010'],
- ['lll', '14. feb 2010 kl. 15:25'],
- ['llll', 'sun 14. feb 2010 kl. 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nokre sekund', '44 sekunder = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eit minutt', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eit minutt', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutt', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutt', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein time', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein time', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timar', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timar', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timar', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein månad', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein månad', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein månad', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein månad', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eit år', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eit år', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'om nokre sekund', 'prefix');
- assert.equal(moment(0).from(30000), 'nokre sekund sidan', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'nokre sekund sidan', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'om nokre sekund', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'I dag klokka 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'I dag klokka 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'I dag klokka 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'I morgon klokka 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'I dag klokka 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'I går klokka 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('pa-in');
- test('parse', function (assert) {
- var tests = 'ਜਨਵਰੀ ਜਨਵਰੀ_ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ_ਮਾਰਚ ਮਾਰਚ_ਅਪ੍ਰੈਲ ਅਪ੍ਰੈਲ_ਮਈ ਮਈ_ਜੂਨ ਜੂਨ_ਜੁਲਾਈ ਜੁਲਾਈ_ਅਗਸਤ ਅਗਸਤ_ਸਤੰਬਰ ਸਤੰਬਰ_ਅਕਤੂਬਰ ਅਕਤੂਬਰ_ਨਵੰਬਰ ਨਵੰਬਰ_ਦਸੰਬਰ ਦਸੰਬਰ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, a h:mm:ss ਵਜੇ', 'ਐਤਵਾਰ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫:੫੦ ਵਜੇ'],
- ['ddd, a h ਵਜੇ', 'ਐਤ, ਦੁਪਹਿਰ ੩ ਵਜੇ'],
- ['M Mo MM MMMM MMM', '੨ ੨ ੦੨ ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ'],
- ['YYYY YY', '੨੦੧੦ ੧੦'],
- ['D Do DD', '੧੪ ੧੪ ੧੪'],
- ['d do dddd ddd dd', '੦ ੦ ਐਤਵਾਰ ਐਤ ਐਤ'],
- ['DDD DDDo DDDD', '੪੫ ੪੫ ੦੪੫'],
- ['w wo ww', '੮ ੮ ੦੮'],
- ['h hh', '੩ ੦੩'],
- ['H HH', '੧੫ ੧੫'],
- ['m mm', '੨੫ ੨੫'],
- ['s ss', '੫੦ ੫੦'],
- ['a A', 'ਦੁਪਹਿਰ ਦੁਪਹਿਰ'],
- ['LTS', 'ਦੁਪਹਿਰ ੩:੨੫:੫੦ ਵਜੇ'],
- ['L', '੧੪/੦੨/੨੦੧੦'],
- ['LL', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦'],
- ['LLL', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'],
- ['LLLL', 'ਐਤਵਾਰ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'],
- ['l', '੧੪/੨/੨੦੧੦'],
- ['ll', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦'],
- ['lll', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'],
- ['llll', 'ਐਤ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '੧', '੧');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '੨', '੨');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '੩', '੩');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '੪', '੪');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '੫', '੫');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '੬', '੬');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '੭', '੭');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '੮', '੮');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '੯', '੯');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '੧੦', '੧੦');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '੧੧', '੧੧');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '੧੨', '੧੨');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '੧੩', '੧੩');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '੧੪', '੧੪');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '੧੫', '੧੫');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '੧੬', '੧੬');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '੧੭', '੧੭');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '੧੮', '੧੮');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '੧੯', '੧੯');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '੨੦', '੨੦');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '੨੧', '੨੧');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '੨੨', '੨੨');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '੨੩', '੨੩');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '੨੪', '੨੪');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '੨੫', '੨੫');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '੨੬', '੨੬');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '੨੭', '੨੭');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '੨੮', '੨੮');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '੨੯', '੨੯');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '੩੦', '੩੦');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '੩੧', '੩੧');
- });
- test('format month', function (assert) {
- var expected = 'ਜਨਵਰੀ ਜਨਵਰੀ_ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ_ਮਾਰਚ ਮਾਰਚ_ਅਪ੍ਰੈਲ ਅਪ੍ਰੈਲ_ਮਈ ਮਈ_ਜੂਨ ਜੂਨ_ਜੁਲਾਈ ਜੁਲਾਈ_ਅਗਸਤ ਅਗਸਤ_ਸਤੰਬਰ ਸਤੰਬਰ_ਅਕਤੂਬਰ ਅਕਤੂਬਰ_ਨਵੰਬਰ ਨਵੰਬਰ_ਦਸੰਬਰ ਦਸੰਬਰ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ਐਤਵਾਰ ਐਤ ਐਤ_ਸੋਮਵਾਰ ਸੋਮ ਸੋਮ_ਮੰਗਲਵਾਰ ਮੰਗਲ ਮੰਗਲ_ਬੁਧਵਾਰ ਬੁਧ ਬੁਧ_ਵੀਰਵਾਰ ਵੀਰ ਵੀਰ_ਸ਼ੁੱਕਰਵਾਰ ਸ਼ੁਕਰ ਸ਼ੁਕਰ_ਸ਼ਨੀਚਰਵਾਰ ਸ਼ਨੀ ਸ਼ਨੀ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ਕੁਝ ਸਕਿੰਟ', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ਇਕ ਮਿੰਟ', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ਇਕ ਮਿੰਟ', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '੨ ਮਿੰਟ', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '੪੪ ਮਿੰਟ', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ਇੱਕ ਘੰਟਾ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ਇੱਕ ਘੰਟਾ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '੨ ਘੰਟੇ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '੫ ਘੰਟੇ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '੨੧ ਘੰਟੇ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ਇੱਕ ਦਿਨ', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ਇੱਕ ਦਿਨ', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '੨ ਦਿਨ', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ਇੱਕ ਦਿਨ', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '੫ ਦਿਨ', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '੨੫ ਦਿਨ', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ਇੱਕ ਮਹੀਨਾ', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ਇੱਕ ਮਹੀਨਾ', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ਇੱਕ ਮਹੀਨਾ', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '੨ ਮਹੀਨੇ', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '੨ ਮਹੀਨੇ', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '੩ ਮਹੀਨੇ', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ਇੱਕ ਮਹੀਨਾ', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '੫ ਮਹੀਨੇ', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ਇੱਕ ਸਾਲ', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '੨ ਸਾਲ', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ਇੱਕ ਸਾਲ', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '੫ ਸਾਲ', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ਕੁਝ ਸਕਿੰਟ ਵਿੱਚ', 'prefix');
- assert.equal(moment(0).from(30000), 'ਕੁਝ ਸਕਿੰਟ ਪਿਛਲੇ', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ਕੁਝ ਸਕਿੰਟ ਪਿਛਲੇ', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ਕੁਝ ਸਕਿੰਟ ਵਿੱਚ', 'ਕੁਝ ਸਕਿੰਟ ਵਿੱਚ');
- assert.equal(moment().add({d: 5}).fromNow(), '੫ ਦਿਨ ਵਿੱਚ', '੫ ਦਿਨ ਵਿੱਚ');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ਅਜ ਦੁਪਹਿਰ ੧੨:੦੦ ਵਜੇ', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ਅਜ ਦੁਪਹਿਰ ੧੨:੨੫ ਵਜੇ', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'ਅਜ ਦੁਪਹਿਰ ੩:੦੦ ਵਜੇ', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ਕਲ ਦੁਪਹਿਰ ੧੨:੦੦ ਵਜੇ', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ਅਜ ਦੁਪਹਿਰ ੧੧:੦੦ ਵਜੇ', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ਕਲ ਦੁਪਹਿਰ ੧੨:੦੦ ਵਜੇ', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ਪਿਛਲੇ] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ਪਿਛਲੇ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ਪਿਛਲੇ] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem invariant', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'ਰਾਤ', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'ਸਵੇਰ', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ਦੁਪਹਿਰ', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'ਸ਼ਾਮ', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'ਸ਼ਾਮ', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'ਰਾਤ', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'ਰਾਤ', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'ਸਵੇਰ', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ਦੁਪਹਿਰ', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'ਸ਼ਾਮ', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'ਸ਼ਾਮ', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'ਰਾਤ', 'night');
- });
- test('weeks year starting sunday', function (assert) {
- assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3');
- });
- test('weeks year starting monday', function (assert) {
- assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1');
- assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
- assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1');
- assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2');
- assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2');
- assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3');
- });
- test('weeks year starting tuesday', function (assert) {
- assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52');
- assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
- assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1');
- assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2');
- assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2');
- assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3');
- });
- test('weeks year starting wednesday', function (assert) {
- assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1');
- assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
- assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1');
- assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2');
- assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2');
- assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3');
- });
- test('weeks year starting thursday', function (assert) {
- assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1');
- assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
- assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1');
- assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2');
- assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2');
- assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3');
- });
- test('weeks year starting friday', function (assert) {
- assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1');
- assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
- assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1');
- assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2');
- assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2');
- assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3');
- });
- test('weeks year starting saturday', function (assert) {
- assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1');
- assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
- assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2');
- assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2');
- assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '੧ ੦੧ ੧', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '੧ ੦੧ ੧', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '੨ ੦੨ ੨', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '੨ ੦੨ ੨', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '੩ ੦੩ ੩', 'Jan 15 2012 should be week 3');
- });
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('pl');
- test('parse', function (assert) {
- var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][2], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][2], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][2].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][2].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('parse strict', function (assert) {
- var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm, true).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][2], 'MMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][2].toLocaleLowerCase(), 'MMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][2].toLocaleUpperCase(), 'MMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'niedziela, luty 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'ndz, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 luty lut'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. niedziela ndz Nd'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 lutego 2010'],
- ['LLL', '14 lutego 2010 15:25'],
- ['LLLL', 'niedziela, 14 lutego 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 lut 2010'],
- ['lll', '14 lut 2010 15:25'],
- ['llll', 'ndz, 14 lut 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'niedziela ndz Nd_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sob So'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kilka sekund', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuty', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuty', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'godzina', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'godzina', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 godziny', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 godzin', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 godzin', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 dzień', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 dzień', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 dzień', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'miesiąc', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'miesiąc', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'miesiąc', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 miesiące', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 miesiące', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miesiące', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'miesiąc', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miesięcy', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 lata', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 lat', '5 years = 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), '112 lat', '112 years = 112 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), '122 lata', '122 years = 122 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), '213 lat', '213 years = 213 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), '223 lata', '223 years = 223 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za kilka sekund', 'prefix');
- assert.equal(moment(0).from(30000), 'kilka sekund temu', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'kilka sekund temu', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za kilka sekund', 'in a few seconds');
- assert.equal(moment().add({h: 1}).fromNow(), 'za godzinę', 'in an hour');
- assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dni', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Dziś o 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Dziś o 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Dziś o 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Jutro o 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dziś o 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Wczoraj o 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[W zeszłą niedzielę o] LT';
- case 3:
- return '[W zeszłą środę o] LT';
- case 6:
- return '[W zeszłą sobotę o] LT';
- default:
- return '[W zeszły] dddd [o] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('pt-br');
- test('parse', function (assert) {
- var tests = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'Dom, 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd', '0 0º Domingo Dom'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '8 8º 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 de Fevereiro de 2010'],
- ['LLL', '14 de Fevereiro de 2010 às 15:25'],
- ['LLLL', 'Domingo, 14 de Fevereiro de 2010 às 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 de Fev de 2010'],
- ['lll', '14 de Fev de 2010 às 15:25'],
- ['llll', 'Dom, 14 de Fev de 2010 às 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Domingo Dom Do_Segunda-feira Seg 2ª_Terça-feira Ter 3ª_Quarta-feira Qua 4ª_Quinta-feira Qui 5ª_Sexta-feira Sex 6ª_Sábado Sáb Sá'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'poucos segundos', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'em poucos segundos', 'prefix');
- assert.equal(moment(0).from(30000), 'poucos segundos atrás', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'em poucos segundos', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hoje às 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3º', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('pt');
- test('parse', function (assert) {
- var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'],
- ['ddd, hA', 'Dom, 3PM'],
- ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14º 14'],
- ['d do dddd ddd', '0 0º Domingo Dom'],
- ['DDD DDDo DDDD', '45 45º 045'],
- ['w wo ww', '6 6º 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45º day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 de Fevereiro de 2010'],
- ['LLL', '14 de Fevereiro de 2010 15:25'],
- ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 de Fev de 2010'],
- ['lll', '14 de Fev de 2010 15:25'],
- ['llll', 'Dom, 14 de Fev de 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º');
- });
- test('format month', function (assert) {
- var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Domingo Dom Do_Segunda-Feira Seg 2ª_Terça-Feira Ter 3ª_Quarta-Feira Qua 4ª_Quinta-Feira Qui 5ª_Sexta-Feira Sex 6ª_Sábado Sáb Sá'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'segundos', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'em segundos', 'prefix');
- assert.equal(moment(0).from(30000), 'há segundos', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'em segundos', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hoje às 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ro');
- test('parse', function (assert) {
- var tests = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss A', 'duminică, februarie 14 2010, 3:25:50 PM'],
- ['ddd, hA', 'Dum, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 februarie febr.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 duminică Dum Du'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 februarie 2010'],
- ['LLL', '14 februarie 2010 15:25'],
- ['LLLL', 'duminică, 14 februarie 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 febr. 2010'],
- ['lll', '14 febr. 2010 15:25'],
- ['llll', 'Dum, 14 febr. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'câteva secunde', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 de minute', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'o oră', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'o oră', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 de ore', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'o zi', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'o zi', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zile', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'o zi', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 zile', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 de zile', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'o lună', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'o lună', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'o lună', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 luni', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 luni', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 luni', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'o lună', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 luni', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ani', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ani', '5 years = 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 19}), true), '19 ani', '19 years = 19 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 20}), true), '20 de ani', '20 years = 20 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 100}), true), '100 de ani', '100 years = 100 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 101}), true), '101 ani', '101 years = 101 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 119}), true), '119 ani', '119 years = 119 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 120}), true), '120 de ani', '120 years = 120 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 219}), true), '219 ani', '219 years = 219 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 220}), true), '220 de ani', '220 years = 220 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'peste câteva secunde', 'prefix');
- assert.equal(moment(0).from(30000), 'câteva secunde în urmă', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'câteva secunde în urmă', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'peste câteva secunde', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'peste 5 zile', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'azi la 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'azi la 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'azi la 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'mâine la 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'azi la 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieri la 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ru');
- test('parse', function (assert) {
- var tests = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- function equalTestStrict(input, mmm, monthIndex) {
- assert.equal(moment(input, mmm, true).month(), monthIndex, input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- equalTestStrict(tests[i][1], 'MMM', i);
- equalTestStrict(tests[i][0], 'MMMM', i);
- equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i);
- equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i);
- equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('parse exceptional case', function (assert) {
- assert.equal(moment('11 Мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989');
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'],
- ['ddd, h A', 'вс, 3 дня'],
- ['M Mo MM MMMM MMM', '2 2-й 02 февраль февр.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-го 14'],
- ['d do dddd ddd dd', '0 0-й воскресенье вс вс'],
- ['DDD DDDo DDDD', '45 45-й 045'],
- ['w wo ww', '7 7-я 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'дня дня'],
- ['DDDo [день года]', '45-й день года'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 февраля 2010 г.'],
- ['LLL', '14 февраля 2010 г., 15:25'],
- ['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 февр. 2010 г.'],
- ['lll', '14 февр. 2010 г., 15:25'],
- ['llll', 'вс, 14 февр. 2010 г., 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format meridiem', function (assert) {
- assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночи', 'night');
- assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночи', 'night');
- assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'утра', 'morning');
- assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'утра', 'morning');
- assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon');
- assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon');
- assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечера', 'evening');
- assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечера', 'evening');
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й');
- });
- test('format month', function (assert) {
- var expected = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format month case', function (assert) {
- var months = {
- 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
- 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
- }
- });
- test('format month short case', function (assert) {
- var monthsShort = {
- 'nominative': 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'),
- 'accusative': 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
- assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]);
- }
- });
- test('format month case with escaped symbols', function (assert) {
- var months = {
- 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
- 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMMM[</b>]'), '<i>1</i> <b>' + months.accusative[i] + '</b>', '1 <b>' + months.accusative[i] + '</b>');
- assert.equal(moment([2013, i, 1]).format('D[-й день] MMMM'), '1-й день ' + months.accusative[i], '1-й день ' + months.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]);
- }
- });
- test('format month short case with escaped symbols', function (assert) {
- var monthsShort = {
- 'nominative': 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'),
- 'accusative': 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('[<i>]D[</i>] [<b>]MMM[</b>]'), '<i>1</i> <b>' + monthsShort.accusative[i] + '</b>', '1 <b>' + monthsShort.accusative[i] + '</b>');
- assert.equal(moment([2013, i, 1]).format('D[-й день] MMM'), '1-й день ' + monthsShort.accusative[i], '1-й день ' + monthsShort.accusative[i]);
- assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср ср_четверг чт чт_пятница пт пт_суббота сб сб'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'несколько секунд', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минуты', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), '31 минута', '31 minutes = 31 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минуты', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часов', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 час', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'день', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'день', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дня', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'день', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дней', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 дней', '11 days = 11 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 день', '21 days = 21 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дней', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месяц', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месяц', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месяц', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месяца', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месяца', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месяца', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месяц', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месяцев', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'год', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 года', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'год', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 лет', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'через несколько секунд', 'prefix');
- assert.equal(moment(0).from(30000), 'несколько секунд назад', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'через несколько секунд', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'через 5 дней', 'in 5 days');
- assert.equal(moment().add({m: 31}).fromNow(), 'через 31 минуту', 'in 31 minutes = in 31 minutes');
- assert.equal(moment().subtract({m: 31}).fromNow(), '31 минуту назад', '31 minutes ago = 31 minutes ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Сегодня в 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Сегодня в 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Сегодня в 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Завтра в 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сегодня в 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера в 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m, now;
- function makeFormatNext(d) {
- switch (d.day()) {
- case 0:
- return '[В следующее] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В следующий] dddd [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В следующую] dddd [в] LT';
- }
- }
- function makeFormatThis(d) {
- if (d.day() === 2) {
- return '[Во] dddd [в] LT';
- }
- else {
- return '[В] dddd [в] LT';
- }
- }
- now = moment().startOf('week');
- for (i = 2; i < 7; i++) {
- m = moment(now).add({d: i});
- assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days end of day');
- }
- now = moment().endOf('week');
- for (i = 2; i < 7; i++) {
- m = moment(now).add({d: i});
- assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, now;
- function makeFormatLast(d) {
- switch (d.day()) {
- case 0:
- return '[В прошлое] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В прошлый] dddd [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В прошлую] dddd [в] LT';
- }
- }
- function makeFormatThis(d) {
- if (d.day() === 2) {
- return '[Во] dddd [в] LT';
- }
- else {
- return '[В] dddd [в] LT';
- }
- }
- now = moment().startOf('week');
- for (i = 2; i < 7; i++) {
- m = moment(now).subtract({d: i});
- assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days end of day');
- }
- now = moment().endOf('week');
- for (i = 2; i < 7; i++) {
- m = moment(now).subtract({d: i});
- assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-я', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-я', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-я', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-я', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-я', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sd');
- var months = [
- 'جنوري',
- 'فيبروري',
- 'مارچ',
- 'اپريل',
- 'مئي',
- 'جون',
- 'جولاءِ',
- 'آگسٽ',
- 'سيپٽمبر',
- 'آڪٽوبر',
- 'نومبر',
- 'ڊسمبر'
- ];
- var days = [
- 'آچر',
- 'سومر',
- 'اڱارو',
- 'اربع',
- 'خميس',
- 'جمع',
- 'ڇنڇر'
- ];
- test('parse', function (assert) {
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (var i = 0; i < 12; i++) {
- equalTest(months[i], 'MMM', i);
- equalTest(months[i], 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'آچر، فيبروري 14 2010، 3:25:50 شام'],
- ['ddd, hA', 'آچر، 3شام'],
- ['M Mo MM MMMM MMM', '2 2 02 فيبروري فيبروري'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 آچر آچر آچر'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'شام شام'],
- ['[سال جو] DDDo[ڏينهن]', 'سال جو 45ڏينهن'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 فيبروري 2010'],
- ['LLL', '14 فيبروري 2010 15:25'],
- ['LLLL', 'آچر، 14 فيبروري 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 فيبروري 2010'],
- ['lll', '14 فيبروري 2010 15:25'],
- ['llll', 'آچر، 14 فيبروري 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- for (var i = 0; i < months.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), months[i] + ' ' + months[i], months[i] + ' ' + months[i]);
- }
- });
- test('format week', function (assert) {
- for (var i = 0; i < days.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), days[i] + ' ' + days[i] + ' ' + days[i], days[i] + ' ' + days[i] + ' ' + days[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'چند سيڪنڊ', '44 seconds = چند سيڪنڊ');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'هڪ منٽ', '45 seconds = هڪ منٽ');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'هڪ منٽ', '89 seconds = هڪ منٽ');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 منٽ', '90 seconds = 2 منٽ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 منٽ', '44 minutes = 44 منٽ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'هڪ ڪلاڪ', '45 minutes = هڪ ڪلاڪ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'هڪ ڪلاڪ', '89 minutes = هڪ ڪلاڪ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ڪلاڪ', '90 minutes = 2 ڪلاڪ');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ڪلاڪ', '5 hours = 5 ڪلاڪ');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ڪلاڪ', '21 hours = 21 ڪلاڪ');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'هڪ ڏينهن', '22 hours = هڪ ڏينهن');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'هڪ ڏينهن', '35 hours = هڪ ڏينهن');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ڏينهن', '36 hours = 2 ڏينهن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'هڪ ڏينهن', '1 day = هڪ ڏينهن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ڏينهن', '5 days = 5 ڏينهن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ڏينهن', '25 days = 25 ڏينهن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'هڪ مهينو', '26 days = هڪ مهينو');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'هڪ مهينو', '30 days = هڪ مهينو');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'هڪ مهينو', '43 days = هڪ مهينو');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 مهينا', '46 days = 2 مهينا');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 مهينا', '75 days = 2 مهينا');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 مهينا', '76 days = 3 مهينا');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'هڪ مهينو', '1 month = هڪ مهينو');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 مهينا', '5 months = 5 مهينا');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'هڪ سال', '345 days = هڪ سال');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سال', '548 days = 2 سال');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'هڪ سال', '1 year = هڪ سال');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سال', '5 years = 5 سال');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'چند سيڪنڊ پوء', 'prefix');
- assert.equal(moment(0).from(30000), 'چند سيڪنڊ اڳ', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'چند سيڪنڊ اڳ', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'چند سيڪنڊ پوء', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 ڏينهن پوء', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'اڄ 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'اڄ 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'اڄ 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'سڀاڻي 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'اڄ 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ڪالهه 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [اڳين هفتي تي] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [اڳين هفتي تي] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [اڳين هفتي تي] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[گزريل هفتي] dddd [تي] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[گزريل هفتي] dddd [تي] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[گزريل هفتي] dddd [تي] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('se');
- test('parse', function (assert) {
- var i,
- tests = 'ođđajagemánnu ođđj_guovvamánnu guov_njukčamánnu njuk_cuoŋománnu cuo_miessemánnu mies_geassemánnu geas_suoidnemánnu suoi_borgemánnu borg_čakčamánnu čakč_golggotmánnu golg_skábmamánnu skáb_juovlamánnu juov'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'sotnabeaivi, guovvamánnu 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'sotn, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 guovvamánnu guov'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. sotnabeaivi sotn s'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[jagi] DDDo [beaivi]', 'jagi 45. beaivi'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', 'guovvamánnu 14. b. 2010'],
- ['LLL', 'guovvamánnu 14. b. 2010 ti. 15:25'],
- ['LLLL', 'sotnabeaivi, guovvamánnu 14. b. 2010 ti. 15:25'],
- ['l', '14.2.2010'],
- ['ll', 'guov 14. b. 2010'],
- ['lll', 'guov 14. b. 2010 ti. 15:25'],
- ['llll', 'sotn, guov 14. b. 2010 ti. 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var i,
- expected = 'ođđajagemánnu ođđj_guovvamánnu guov_njukčamánnu njuk_cuoŋománnu cuo_miessemánnu mies_geassemánnu geas_suoidnemánnu suoi_borgemánnu borg_čakčamánnu čakč_golggotmánnu golg_skábmamánnu skáb_juovlamánnu juov'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'sotnabeaivi sotn s_vuossárga vuos v_maŋŋebárga maŋ m_gaskavahkku gask g_duorastat duor d_bearjadat bear b_lávvardat láv L'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'moadde sekunddat', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'okta minuhta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'okta minuhta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuhtat', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuhtat', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'okta diimmu', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'okta diimmu', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 diimmut', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 diimmut', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 diimmut', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'okta beaivi', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'okta beaivi', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 beaivvit', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'okta beaivi', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 beaivvit', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 beaivvit', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'okta mánnu', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'okta mánnu', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'okta mánnu', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánut', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánut', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánut', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'okta mánnu', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánut', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'okta jahki', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jagit', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'okta jahki', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jagit', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'moadde sekunddat geažes', 'prefix');
- assert.equal(moment(0).from(30000), 'maŋit moadde sekunddat', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'maŋit moadde sekunddat', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'moadde sekunddat geažes', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 beaivvit geažes', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'otne ti 12:00', 'Today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'otne ti 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'otne ti 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ihttin ti 12:00', 'Tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'otne ti 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ikte ti 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [ti] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [ti] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [ti] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[ovddit] dddd [ti] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[ovddit] dddd [ti] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[ovddit] dddd [ti] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('si');
- /*jshint -W100*/
- test('parse', function (assert) {
- var tests = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'],
- ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'],
- ['ddd, A h', 'ඉරි, පස් වරු 3'],
- ['M Mo MM MMMM MMM', '2 2 වැනි 02 පෙබරවාරි පෙබ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 වැනි 14'],
- ['d do dddd ddd dd', '0 0 වැනි ඉරිදා ඉරි ඉ'],
- ['DDD DDDo DDDD', '45 45 වැනි 045'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'ප.ව. පස් වරු'],
- ['[වසරේ] DDDo [දිනය]', 'වසරේ 45 වැනි දිනය'],
- ['LTS', 'ප.ව. 3:25:50'],
- ['LT', 'ප.ව. 3:25'],
- ['L', '2010/02/14'],
- ['LL', '2010 පෙබරවාරි 14'],
- ['LLL', '2010 පෙබරවාරි 14, ප.ව. 3:25'],
- ['LLLL', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'],
- ['l', '2010/2/14'],
- ['ll', '2010 පෙබ 14'],
- ['lll', '2010 පෙබ 14, ප.ව. 3:25'],
- ['llll', '2010 පෙබ 14 වැනි ඉරි, ප.ව. 3:25:50']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1 වැනි', '1 වැනි');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2 වැනි', '2 වැනි');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3 වැනි', '3 වැනි');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4 වැනි', '4 වැනි');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5 වැනි', '5 වැනි');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6 වැනි', '6 වැනි');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7 වැනි', '7 වැනි');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8 වැනි', '8 වැනි');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9 වැනි', '9 වැනි');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10 වැනි', '10 වැනි');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11 වැනි', '11 වැනි');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12 වැනි', '12 වැනි');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13 වැනි', '13 වැනි');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14 වැනි', '14 වැනි');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15 වැනි', '15 වැනි');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16 වැනි', '16 වැනි');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17 වැනි', '17 වැනි');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18 වැනි', '18 වැනි');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19 වැනි', '19 වැනි');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20 වැනි', '20 වැනි');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21 වැනි', '21 වැනි');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22 වැනි', '22 වැනි');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23 වැනි', '23 වැනි');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24 වැනි', '24 වැනි');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25 වැනි', '25 වැනි');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26 වැනි', '26 වැනි');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27 වැනි', '27 වැනි');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28 වැනි', '28 වැනි');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29 වැනි', '29 වැනි');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30 වැනි', '30 වැනි');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31 වැනි', '31 වැනි');
- });
- test('format month', function (assert) {
- var expected = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ඉරිදා ඉරි ඉ_සඳුදා සඳු ස_අඟහරුවාදා අඟ අ_බදාදා බදා බ_බ්රහස්පතින්දා බ්රහ බ්ර_සිකුරාදා සිකු සි_සෙනසුරාදා සෙන සෙ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'තත්පර කිහිපය', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'මිනිත්තුව', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'මිනිත්තුව', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'මිනිත්තු 2', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'මිනිත්තු 44', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'පැය', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'පැය', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'පැය 2', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'පැය 5', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'පැය 21', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'දිනය', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'දිනය', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'දින 2', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'දිනය', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'දින 5', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'දින 25', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'මාසය', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'මාසය', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'මාසය', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'මාස 2', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'මාස 2', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'මාස 3', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'මාසය', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'මාස 5', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'වසර', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'වසර 2', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'වසර', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'වසර 5', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'තත්පර කිහිපයකින්', 'prefix');
- assert.equal(moment(0).from(30000), 'තත්පර කිහිපයකට පෙර', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'තත්පර කිහිපයකට පෙර', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'තත්පර කිහිපයකින්', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'දින 5කින්', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'අද ප.ව. 12:00ට', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'අද ප.ව. 12:25ට', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'අද ප.ව. 1:00ට', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'හෙට ප.ව. 12:00ට', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'අද පෙ.ව. 11:00ට', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ඊයේ ප.ව. 12:00ට', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sk');
- test('parse', function (assert) {
- var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split('_'), i;
- function equalTest(input, mmm, monthIndex) {
- assert.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'],
- ['ddd, h', 'ne, 3'],
- ['M Mo MM MMMM MMM', '2 2. 02 február feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. nedeľa ne ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['DDDo [deň v roku]', '45. deň v roku'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. február 2010'],
- ['LLL', '14. február 2010 15:25'],
- ['LLLL', 'nedeľa 14. február 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb 2010'],
- ['lll', '14. feb 2010 15:25'],
- ['llll', 'ne 14. feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'pár sekúnd', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minúta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minúta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minúty', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minút', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'hodina', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'hodina', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hodiny', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodín', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodín', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'deň', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'deň', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'deň', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesiac', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesiac', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesiac', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesiace', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesiace', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesiace', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesiac', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesiacov', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 roky', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 rokov', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za pár sekúnd', 'prefix');
- assert.equal(moment(0).from(30000), 'pred pár sekundami', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'pred pár sekundami', 'now from now should display as in the past');
- });
- test('fromNow (future)', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekúnd', 'in a few seconds');
- assert.equal(moment().add({m: 1}).fromNow(), 'za minútu', 'in a minute');
- assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minúty', 'in 3 minutes');
- assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minút', 'in 10 minutes');
- assert.equal(moment().add({h: 1}).fromNow(), 'za hodinu', 'in an hour');
- assert.equal(moment().add({h: 3}).fromNow(), 'za 3 hodiny', 'in 3 hours');
- assert.equal(moment().add({h: 10}).fromNow(), 'za 10 hodín', 'in 10 hours');
- assert.equal(moment().add({d: 1}).fromNow(), 'za deň', 'in a day');
- assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dni', 'in 3 days');
- assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days');
- assert.equal(moment().add({M: 1}).fromNow(), 'za mesiac', 'in a month');
- assert.equal(moment().add({M: 3}).fromNow(), 'za 3 mesiace', 'in 3 months');
- assert.equal(moment().add({M: 10}).fromNow(), 'za 10 mesiacov', 'in 10 months');
- assert.equal(moment().add({y: 1}).fromNow(), 'za rok', 'in a year');
- assert.equal(moment().add({y: 3}).fromNow(), 'za 3 roky', 'in 3 years');
- assert.equal(moment().add({y: 10}).fromNow(), 'za 10 rokov', 'in 10 years');
- });
- test('fromNow (past)', function (assert) {
- assert.equal(moment().subtract({s: 30}).fromNow(), 'pred pár sekundami', 'a few seconds ago');
- assert.equal(moment().subtract({m: 1}).fromNow(), 'pred minútou', 'a minute ago');
- assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minútami', '3 minutes ago');
- assert.equal(moment().subtract({m: 10}).fromNow(), 'pred 10 minútami', '10 minutes ago');
- assert.equal(moment().subtract({h: 1}).fromNow(), 'pred hodinou', 'an hour ago');
- assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 hodinami', '3 hours ago');
- assert.equal(moment().subtract({h: 10}).fromNow(), 'pred 10 hodinami', '10 hours ago');
- assert.equal(moment().subtract({d: 1}).fromNow(), 'pred dňom', 'a day ago');
- assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dňami', '3 days ago');
- assert.equal(moment().subtract({d: 10}).fromNow(), 'pred 10 dňami', '10 days ago');
- assert.equal(moment().subtract({M: 1}).fromNow(), 'pred mesiacom', 'a month ago');
- assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 mesiacmi', '3 months ago');
- assert.equal(moment().subtract({M: 10}).fromNow(), 'pred 10 mesiacmi', '10 months ago');
- assert.equal(moment().subtract({y: 1}).fromNow(), 'pred rokom', 'a year ago');
- assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 rokmi', '3 years ago');
- assert.equal(moment().subtract({y: 10}).fromNow(), 'pred 10 rokmi', '10 years ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'dnes o 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'dnes o 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'dnes o 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'zajtra o 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes o 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera o 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m, nextDay;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- nextDay = '';
- switch (m.day()) {
- case 0:
- nextDay = 'v nedeľu';
- break;
- case 1:
- nextDay = 'v pondelok';
- break;
- case 2:
- nextDay = 'v utorok';
- break;
- case 3:
- nextDay = 'v stredu';
- break;
- case 4:
- nextDay = 'vo štvrtok';
- break;
- case 5:
- nextDay = 'v piatok';
- break;
- case 6:
- nextDay = 'v sobotu';
- break;
- }
- assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m, lastDay;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- lastDay = '';
- switch (m.day()) {
- case 0:
- lastDay = 'minulú nedeľu';
- break;
- case 1:
- lastDay = 'minulý pondelok';
- break;
- case 2:
- lastDay = 'minulý utorok';
- break;
- case 3:
- lastDay = 'minulú stredu';
- break;
- case 4:
- lastDay = 'minulý štvrtok';
- break;
- case 5:
- lastDay = 'minulý piatok';
- break;
- case 6:
- lastDay = 'minulú sobotu';
- break;
- }
- assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('humanize duration', function (assert) {
- assert.equal(moment.duration(1, 'minutes').humanize(), 'minúta', 'a minute (future)');
- assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minútu', 'in a minute');
- assert.equal(moment.duration(-1, 'minutes').humanize(), 'minúta', 'a minute (past)');
- assert.equal(moment.duration(-1, 'minutes').humanize(true), 'pred minútou', 'a minute ago');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sl');
- test('parse', function (assert) {
- var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'],
- ['ddd, hA', 'ned., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. nedelja ned. ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 15:25'],
- ['LLLL', 'nedelja, 14. februar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb. 2010'],
- ['lll', '14. feb. 2010 15:25'],
- ['llll', 'ned., 14. feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekaj sekund', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ena minuta', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ena minuta', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ena ura', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ena ura', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uri', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ur', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dan', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dan', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en mesec', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en mesec', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en mesec', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesece', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eno leto', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 leti', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 1}), true), 'ena minuta', 'a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 2}), true), '2 minuti', '2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 3}), true), '3 minute', '3 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 4}), true), '4 minute', '4 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 5}), true), '5 minut', '5 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 1}), true), 'ena ura', 'an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 2}), true), '2 uri', '2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 3}), true), '3 ure', '3 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 4}), true), '4 ure', '4 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', 'a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 2}), true), '2 dni', '2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 3}), true), '3 dni', '3 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 4}), true), '4 dni', '4 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', 'a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 2}), true), '2 meseca', '2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 3}), true), '3 mesece', '3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 4}), true), '4 mesece', '4 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', 'a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 leti', '2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 leta', '3 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 leta', '4 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'čez nekaj sekund', 'prefix');
- assert.equal(moment(0).from(30000), 'pred nekaj sekundami', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'pred nekaj sekundami', 'now from now should display as in the past');
- });
- test('fromNow (future)', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'čez nekaj sekund', 'in a few seconds');
- assert.equal(moment().add({m: 1}).fromNow(), 'čez eno minuto', 'in a minute');
- assert.equal(moment().add({m: 2}).fromNow(), 'čez 2 minuti', 'in 2 minutes');
- assert.equal(moment().add({m: 3}).fromNow(), 'čez 3 minute', 'in 3 minutes');
- assert.equal(moment().add({m: 4}).fromNow(), 'čez 4 minute', 'in 4 minutes');
- assert.equal(moment().add({m: 5}).fromNow(), 'čez 5 minut', 'in 5 minutes');
- assert.equal(moment().add({h: 1}).fromNow(), 'čez eno uro', 'in an hour');
- assert.equal(moment().add({h: 2}).fromNow(), 'čez 2 uri', 'in 2 hours');
- assert.equal(moment().add({h: 3}).fromNow(), 'čez 3 ure', 'in 3 hours');
- assert.equal(moment().add({h: 4}).fromNow(), 'čez 4 ure', 'in 4 hours');
- assert.equal(moment().add({h: 5}).fromNow(), 'čez 5 ur', 'in 5 hours');
- assert.equal(moment().add({d: 1}).fromNow(), 'čez en dan', 'in a day');
- assert.equal(moment().add({d: 2}).fromNow(), 'čez 2 dni', 'in 2 days');
- assert.equal(moment().add({d: 3}).fromNow(), 'čez 3 dni', 'in 3 days');
- assert.equal(moment().add({d: 4}).fromNow(), 'čez 4 dni', 'in 4 days');
- assert.equal(moment().add({d: 5}).fromNow(), 'čez 5 dni', 'in 5 days');
- assert.equal(moment().add({M: 1}).fromNow(), 'čez en mesec', 'in a month');
- assert.equal(moment().add({M: 2}).fromNow(), 'čez 2 meseca', 'in 2 months');
- assert.equal(moment().add({M: 3}).fromNow(), 'čez 3 mesece', 'in 3 months');
- assert.equal(moment().add({M: 4}).fromNow(), 'čez 4 mesece', 'in 4 months');
- assert.equal(moment().add({M: 5}).fromNow(), 'čez 5 mesecev', 'in 5 months');
- assert.equal(moment().add({y: 1}).fromNow(), 'čez eno leto', 'in a year');
- assert.equal(moment().add({y: 2}).fromNow(), 'čez 2 leti', 'in 2 years');
- assert.equal(moment().add({y: 3}).fromNow(), 'čez 3 leta', 'in 3 years');
- assert.equal(moment().add({y: 4}).fromNow(), 'čez 4 leta', 'in 4 years');
- assert.equal(moment().add({y: 5}).fromNow(), 'čez 5 let', 'in 5 years');
- assert.equal(moment().subtract({s: 30}).fromNow(), 'pred nekaj sekundami', 'a few seconds ago');
- assert.equal(moment().subtract({m: 1}).fromNow(), 'pred eno minuto', 'a minute ago');
- assert.equal(moment().subtract({m: 2}).fromNow(), 'pred 2 minutama', '2 minutes ago');
- assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minutami', '3 minutes ago');
- assert.equal(moment().subtract({m: 4}).fromNow(), 'pred 4 minutami', '4 minutes ago');
- assert.equal(moment().subtract({m: 5}).fromNow(), 'pred 5 minutami', '5 minutes ago');
- assert.equal(moment().subtract({h: 1}).fromNow(), 'pred eno uro', 'an hour ago');
- assert.equal(moment().subtract({h: 2}).fromNow(), 'pred 2 urama', '2 hours ago');
- assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 urami', '3 hours ago');
- assert.equal(moment().subtract({h: 4}).fromNow(), 'pred 4 urami', '4 hours ago');
- assert.equal(moment().subtract({h: 5}).fromNow(), 'pred 5 urami', '5 hours ago');
- assert.equal(moment().subtract({d: 1}).fromNow(), 'pred enim dnem', 'a day ago');
- assert.equal(moment().subtract({d: 2}).fromNow(), 'pred 2 dnevoma', '2 days ago');
- assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dnevi', '3 days ago');
- assert.equal(moment().subtract({d: 4}).fromNow(), 'pred 4 dnevi', '4 days ago');
- assert.equal(moment().subtract({d: 5}).fromNow(), 'pred 5 dnevi', '5 days ago');
- assert.equal(moment().subtract({M: 1}).fromNow(), 'pred enim mesecem', 'a month ago');
- assert.equal(moment().subtract({M: 2}).fromNow(), 'pred 2 mesecema', '2 months ago');
- assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 meseci', '3 months ago');
- assert.equal(moment().subtract({M: 4}).fromNow(), 'pred 4 meseci', '4 months ago');
- assert.equal(moment().subtract({M: 5}).fromNow(), 'pred 5 meseci', '5 months ago');
- assert.equal(moment().subtract({y: 1}).fromNow(), 'pred enim letom', 'a year ago');
- assert.equal(moment().subtract({y: 2}).fromNow(), 'pred 2 letoma', '2 years ago');
- assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 leti', '3 years ago');
- assert.equal(moment().subtract({y: 4}).fromNow(), 'pred 4 leti', '4 years ago');
- assert.equal(moment().subtract({y: 5}).fromNow(), 'pred 5 leti', '5 years ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'danes ob 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'danes ob 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'danes ob 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'jutri ob 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'danes ob 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'včeraj ob 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[v] [nedeljo] [ob] LT';
- case 3:
- return '[v] [sredo] [ob] LT';
- case 6:
- return '[v] [soboto] [ob] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[v] dddd [ob] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[prejšnjo] [nedeljo] [ob] LT';
- case 3:
- return '[prejšnjo] [sredo] [ob] LT';
- case 6:
- return '[prejšnjo] [soboto] [ob] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[prejšnji] dddd [ob] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sq');
- test('parse', function (assert) {
- var i,
- tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, HH:mm:ss', 'E Diel, Shkurt 14. 2010, 15:25:50'],
- ['ddd, HH', 'Die, 15'],
- ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. E Diel Die D'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'MD MD'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 Shkurt 2010'],
- ['LLL', '14 Shkurt 2010 15:25'],
- ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Shk 2010'],
- ['lll', '14 Shk 2010 15:25'],
- ['llll', 'Die, 14 Shk 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'PD', 'before dawn');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'MD', 'noon');
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var i,
- expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'E Diel Die D_E Hënë Hën H_E Martë Mar Ma_E Mërkurë Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'disa sekonda', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'një minutë', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'një minutë', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'një orë', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'një orë', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 orë', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 orë', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 orë', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'një ditë', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'një ditë', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ditë', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'një ditë', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ditë', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ditë', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'një muaj', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'një muaj', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'një muaj', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 muaj', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 muaj', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 muaj', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'një muaj', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 muaj', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'një vit', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vite', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'një vit', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 vite', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'në disa sekonda', 'prefix');
- assert.equal(moment(0).from(30000), 'disa sekonda më parë', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'disa sekonda më parë', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'në disa sekonda', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'në 5 ditë', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Sot në 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Sot në 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Sot në 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Nesër në 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Sot në 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dje në 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sr-cyrl');
- test('parse', function (assert) {
- var tests = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'недеља, 14. фебруар 2010, 3:25:50 pm'],
- ['ddd, hA', 'нед., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 фебруар феб.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. недеља нед. не'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. фебруар 2010'],
- ['LLL', '14. фебруар 2010 15:25'],
- ['LLLL', 'недеља, 14. фебруар 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. феб. 2010'],
- ['lll', '14. феб. 2010 15:25'],
- ['llll', 'нед., 14. феб. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'недеља нед. не_понедељак пон. по_уторак уто. ут_среда сре. ср_четвртак чет. че_петак пет. пе_субота суб. су'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'неколико секунди', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'један минут', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'један минут', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минуте', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минута', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'један сат', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'један сат', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сата', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сати', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сати', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'дан', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'дан', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дана', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'дан', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дана', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дана', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеца', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеца', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеца', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеци', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'годину', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 године', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'годину', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 година', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'за неколико секунди', 'prefix');
- assert.equal(moment(0).from(30000), 'пре неколико секунди', 'prefix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'пре неколико секунди', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'за неколико секунди', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'за 5 дана', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'данас у 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'данас у 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'данас у 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'сутра у 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'данас у 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'јуче у 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[у] [недељу] [у] LT';
- case 3:
- return '[у] [среду] [у] LT';
- case 6:
- return '[у] [суботу] [у] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[у] dddd [у] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- var lastWeekDay = [
- '[прошле] [недеље] [у] LT',
- '[прошлог] [понедељка] [у] LT',
- '[прошлог] [уторка] [у] LT',
- '[прошле] [среде] [у] LT',
- '[прошлог] [четвртка] [у] LT',
- '[прошлог] [петка] [у] LT',
- '[прошле] [суботе] [у] LT'
- ];
- return lastWeekDay[d.day()];
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sr');
- test('parse', function (assert) {
- var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'],
- ['ddd, hA', 'ned., 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. nedelja ned. ne'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '7 7. 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14. februar 2010'],
- ['LLL', '14. februar 2010 15:25'],
- ['LLLL', 'nedelja, 14. februar 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14. feb. 2010'],
- ['lll', '14. feb. 2010 15:25'],
- ['llll', 'ned., 14. feb. 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesec', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesec', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesec', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meseca', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesec', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meseci', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix');
- assert.equal(moment(0).from(30000), 'pre nekoliko sekundi', 'prefix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'pre nekoliko sekundi', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'danas u 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- return '[u] [nedelju] [u] LT';
- case 3:
- return '[u] [sredu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[u] dddd [u] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- var lastWeekDay = [
- '[prošle] [nedelje] [u] LT',
- '[prošlog] [ponedeljka] [u] LT',
- '[prošlog] [utorka] [u] LT',
- '[prošle] [srede] [u] LT',
- '[prošlog] [četvrtka] [u] LT',
- '[prošlog] [petka] [u] LT',
- '[prošle] [subote] [u] LT'
- ];
- return lastWeekDay[d.day()];
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ss');
- test('parse', function (assert) {
- var tests = "Bhimbidvwane Bhi_Indlovana Ina_Indlov'lenkhulu Inu_Mabasa Mab_Inkhwekhweti Ink_Inhlaba Inh_Kholwane Kho_Ingci Igc_Inyoni Iny_Imphala Imp_Lweti lwe_Ingongoni Igo".split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('parse meridiem', function (assert) {
- var i,
- b = moment(),
- meridiemTests = [
- // h a patterns, expected hours, isValid
- ['10 ekuseni', 10, true],
- ['11 emini', 11, true],
- ['3 entsambama', 15, true],
- ['4 entsambama', 16, true],
- ['6 entsambama', 18, true],
- ['7 ebusuku', 19, true],
- ['12 ebusuku', 0, true],
- ['10 am', 10, false],
- ['10 pm', 10, false]
- ],
- parsed;
- // test that a formatted moment including meridiem string can be parsed back to the same moment
- assert.ok(b.isSame(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'ss', true), 'seconds'), b.format('h:mm:ss a') + ' should be equal to ' + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'ss', true).format('h:mm:ss a'));
- // test that a formatted moment having a meridiem string can be parsed with strict flag
- assert.ok(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'ss', true).isValid(), b.format('h:mm:ss a') + ' should be parsed as valid');
- for (i = 0; i < meridiemTests.length; i++) {
- parsed = moment(meridiemTests[i][0], 'h a', 'ss', true);
- assert.equal(parsed.isValid(), meridiemTests[i][2], 'validity for ' + meridiemTests[i][0]);
- if (parsed.isValid()) {
- assert.equal(parsed.hours(), meridiemTests[i][1], 'hours for ' + meridiemTests[i][0]);
- }
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Lisontfo, Indlovana 14 2010, 3:25:50 entsambama'],
- ['ddd, h A', 'Lis, 3 entsambama'],
- ['M Mo MM MMMM MMM', '2 2 02 Indlovana Ina'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Lisontfo Lis Li'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'entsambama entsambama'],
- ['[Lilanga] DDDo [lilanga lelinyaka]', 'Lilanga 45 lilanga lelinyaka'],
- ['LTS', '3:25:50 entsambama'],
- ['L', '14/02/2010'],
- ['LL', '14 Indlovana 2010'],
- ['LLL', '14 Indlovana 2010 3:25 entsambama'],
- ['LLLL', 'Lisontfo, 14 Indlovana 2010 3:25 entsambama'],
- ['l', '14/2/2010'],
- ['ll', '14 Ina 2010'],
- ['lll', '14 Ina 2010 3:25 entsambama'],
- ['llll', 'Lis, 14 Ina 2010 3:25 entsambama']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = "Bhimbidvwane Bhi_Indlovana Ina_Indlov'lenkhulu Inu_Mabasa Mab_Inkhwekhweti Ink_Inhlaba Inh_Kholwane Kho_Ingci Igc_Inyoni Iny_Imphala Imp_Lweti Lwe_Ingongoni Igo".split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Lisontfo Lis Li_Umsombuluko Umb Us_Lesibili Lsb Lb_Lesitsatfu Les Lt_Lesine Lsi Ls_Lesihlanu Lsh Lh_Umgcibelo Umg Ug'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'emizuzwana lomcane', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'umzuzu', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'umzuzu', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 emizuzu', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 emizuzu', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'lihora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'lihora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 emahora', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 emahora', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 emahora', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'lilanga', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'lilanga', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 emalanga', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'lilanga', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 emalanga', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 emalanga', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'inyanga', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'inyanga', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'inyanga', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 tinyanga', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 tinyanga', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 tinyanga', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'inyanga', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 tinyanga', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'umnyaka', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 iminyaka', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'umnyaka', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 iminyaka', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'nga emizuzwana lomcane', 'prefix');
- assert.equal(moment(0).from(30000), 'wenteka nga emizuzwana lomcane', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'wenteka nga emizuzwana lomcane', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'nga emizuzwana lomcane', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'nga 5 emalanga', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Namuhla nga 12:00 emini', 'Today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Namuhla nga 12:25 emini', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Namuhla nga 1:00 emini', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Kusasa nga 12:00 emini', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Namuhla nga 11:00 emini', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Itolo nga 12:00 emini', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [nga] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [nga] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [nga] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [leliphelile] [nga] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [leliphelile] [nga] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [leliphelile] [nga] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 4 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sv');
- test('parse', function (assert) {
- var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'söndag, februari 14e 2010, 3:25:50 pm'],
- ['ddd, hA', 'sön, 3PM'],
- ['M Mo MM MMMM MMM', '2 2a 02 februari feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14e 14'],
- ['d do dddd ddd dd', '0 0e söndag sön sö'],
- ['DDD DDDo DDDD', '45 45e 045'],
- ['w wo ww', '6 6e 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45e day of the year'],
- ['LTS', '15:25:50'],
- ['L', '2010-02-14'],
- ['LL', '14 februari 2010'],
- ['LLL', '14 februari 2010 kl. 15:25'],
- ['LLLL', 'söndag 14 februari 2010 kl. 15:25'],
- ['l', '2010-2-14'],
- ['ll', '14 feb 2010'],
- ['lll', '14 feb 2010 15:25'],
- ['llll', 'sön 14 feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a');
- });
- test('format month', function (assert) {
- var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'några sekunder', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'en minut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'en minut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuter', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuter', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en timme', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en timme', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timmar', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timmar', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timmar', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en månad', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en månad', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en månad', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en månad', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'om några sekunder', 'prefix');
- assert.equal(moment(0).from(30000), 'för några sekunder sedan', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'för några sekunder sedan', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'om några sekunder', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Idag 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Idag 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Idag 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Imorgon 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Idag 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Igår 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('sw');
- test('parse', function (assert) {
- var tests = 'Januari Jan_Februari Feb_Machi Mac_Aprili Apr_Mei Mei_Juni Jun_Julai Jul_Agosti Ago_Septemba Sep_Oktoba Okt_Novemba Nov_Desemba Des'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Jumapili, Februari 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'Jpl, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Jumapili Jpl J2'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[siku] DDDo [ya mwaka]', 'siku 45 ya mwaka'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 Februari 2010'],
- ['LLL', '14 Februari 2010 15:25'],
- ['LLLL', 'Jumapili, 14 Februari 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 Feb 2010'],
- ['lll', '14 Feb 2010 15:25'],
- ['llll', 'Jpl, 14 Feb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'Januari Jan_Februari Feb_Machi Mac_Aprili Apr_Mei Mei_Juni Jun_Julai Jul_Agosti Ago_Septemba Sep_Oktoba Okt_Novemba Nov_Desemba Des'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Jumapili Jpl J2_Jumatatu Jtat J3_Jumanne Jnne J4_Jumatano Jtan J5_Alhamisi Alh Al_Ijumaa Ijm Ij_Jumamosi Jmos J1'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'hivi punde', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'dakika moja', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'dakika moja', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'dakika 2', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'dakika 44', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'saa limoja', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'saa limoja', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'masaa 2', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'masaa 5', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'masaa 21', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'siku moja', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'siku moja', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'masiku 2', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'siku moja', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'masiku 5', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'masiku 25', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mwezi mmoja', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mwezi mmoja', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mwezi mmoja', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'miezi 2', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'miezi 2', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'miezi 3', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mwezi mmoja', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'miezi 5', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'mwaka mmoja', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'miaka 2', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'mwaka mmoja', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'miaka 5', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'hivi punde baadaye', 'prefix');
- assert.equal(moment(0).from(30000), 'tokea hivi punde', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'tokea hivi punde', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'hivi punde baadaye', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'masiku 5 baadaye', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'leo saa 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'leo saa 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'leo saa 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'kesho saa 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'leo saa 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'jana 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[wiki ijayo] dddd [saat] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[wiki ijayo] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[wiki ijayo] dddd [saat] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[wiki iliyopita] dddd [saat] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[wiki iliyopita] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[wiki iliyopita] dddd [saat] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ta');
- test('parse', function (assert) {
- var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'ஞாயிற்றுக்கிழமை, பிப்ரவரி ௧௪வது ௨௦௧௦, ௩:௨௫:௫௦ எற்பாடு'],
- ['ddd, hA', 'ஞாயிறு, ௩ எற்பாடு'],
- ['M Mo MM MMMM MMM', '௨ ௨வது ௦௨ பிப்ரவரி பிப்ரவரி'],
- ['YYYY YY', '௨௦௧௦ ௧௦'],
- ['D Do DD', '௧௪ ௧௪வது ௧௪'],
- ['d do dddd ddd dd', '௦ ௦வது ஞாயிற்றுக்கிழமை ஞாயிறு ஞா'],
- ['DDD DDDo DDDD', '௪௫ ௪௫வது ௦௪௫'],
- ['w wo ww', '௮ ௮வது ௦௮'],
- ['h hh', '௩ ௦௩'],
- ['H HH', '௧௫ ௧௫'],
- ['m mm', '௨௫ ௨௫'],
- ['s ss', '௫௦ ௫௦'],
- ['a A', ' எற்பாடு எற்பாடு'],
- ['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் ௪௫வது நாள்'],
- ['LTS', '௧௫:௨௫:௫௦'],
- ['L', '௧௪/௦௨/௨௦௧௦'],
- ['LL', '௧௪ பிப்ரவரி ௨௦௧௦'],
- ['LLL', '௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'],
- ['LLLL', 'ஞாயிற்றுக்கிழமை, ௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'],
- ['l', '௧௪/௨/௨௦௧௦'],
- ['ll', '௧௪ பிப்ரவரி ௨௦௧௦'],
- ['lll', '௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'],
- ['llll', 'ஞாயிறு, ௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '௧வது', '௧வது');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '௨வது', '௨வது');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '௩வது', '௩வது');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '௪வது', '௪வது');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '௫வது', '௫வது');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '௬வது', '௬வது');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '௭வது', '௭வது');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '௮வது', '௮வது');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '௯வது', '௯வது');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '௧௦வது', '௧௦வது');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '௧௧வது', '௧௧வது');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '௧௨வது', '௧௨வது');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '௧௩வது', '௧௩வது');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '௧௪வது', '௧௪வது');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '௧௫வது', '௧௫வது');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '௧௬வது', '௧௬வது');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '௧௭வது', '௧௭வது');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '௧௮வது', '௧௮வது');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '௧௯வது', '௧௯வது');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '௨௦வது', '௨௦வது');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '௨௧வது', '௨௧வது');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '௨௨வது', '௨௨வது');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '௨௩வது', '௨௩வது');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '௨௪வது', '௨௪வது');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '௨௫வது', '௨௫வது');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '௨௬வது', '௨௬வது');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '௨௭வது', '௨௭வது');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '௨௮வது', '௨௮வது');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '௨௯வது', '௨௯வது');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '௩௦வது', '௩௦வது');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '௩௧வது', '௩௧வது');
- });
- test('format month', function (assert) {
- var expected = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ஒரு சில விநாடிகள்', '44 விநாடிகள் = ஒரு சில விநாடிகள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ஒரு நிமிடம்', '45 விநாடிகள் = ஒரு நிமிடம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ஒரு நிமிடம்', '89 விநாடிகள் = ஒரு நிமிடம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '௨ நிமிடங்கள்', '90 விநாடிகள் = ௨ நிமிடங்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '௪௪ நிமிடங்கள்', '44 நிமிடங்கள் = 44 நிமிடங்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ஒரு மணி நேரம்', '45 நிமிடங்கள் = ஒரு மணி நேரம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ஒரு மணி நேரம்', '89 நிமிடங்கள் = ஒரு மணி நேரம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '௨ மணி நேரம்', '90 நிமிடங்கள் = ௨ மணி நேரம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '௫ மணி நேரம்', '5 மணி நேரம் = 5 மணி நேரம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '௨௧ மணி நேரம்', '௨௧ மணி நேரம் = ௨௧ மணி நேரம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ஒரு நாள்', '௨௨ மணி நேரம் = ஒரு நாள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ஒரு நாள்', '௩5 மணி நேரம் = ஒரு நாள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '௨ நாட்கள்', '௩6 மணி நேரம் = ௨ days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ஒரு நாள்', '௧ நாள் = ஒரு நாள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '௫ நாட்கள்', '5 நாட்கள் = 5 நாட்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '௨௫ நாட்கள்', '௨5 நாட்கள் = ௨5 நாட்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ஒரு மாதம்', '௨6 நாட்கள் = ஒரு மாதம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ஒரு மாதம்', '௩0 நாட்கள் = ஒரு மாதம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ஒரு மாதம்', '45 நாட்கள் = ஒரு மாதம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '௨ மாதங்கள்', '46 நாட்கள் = ௨ மாதங்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '௨ மாதங்கள்', '75 நாட்கள் = ௨ மாதங்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '௩ மாதங்கள்', '76 நாட்கள் = ௩ மாதங்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ஒரு மாதம்', '௧ மாதம் = ஒரு மாதம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '௫ மாதங்கள்', '5 மாதங்கள் = 5 மாதங்கள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ஒரு வருடம்', '௩45 நாட்கள் = ஒரு வருடம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '௨ ஆண்டுகள்', '548 நாட்கள் = ௨ ஆண்டுகள்');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ஒரு வருடம்', '௧ வருடம் = ஒரு வருடம்');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '௫ ஆண்டுகள்', '5 ஆண்டுகள் = 5 ஆண்டுகள்');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ஒரு சில விநாடிகள் இல்', 'prefix');
- assert.equal(moment(0).from(30000), 'ஒரு சில விநாடிகள் முன்', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ஒரு சில விநாடிகள் முன்', 'இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ஒரு சில விநாடிகள் இல்', 'ஒரு சில விநாடிகள் இல்');
- assert.equal(moment().add({d: 5}).fromNow(), '௫ நாட்கள் இல்', '5 நாட்கள் இல்');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'இன்று ௧௨:௦௦', 'இன்று 12:00');
- assert.equal(moment(a).add({m: 25}).calendar(), 'இன்று ௧௨:௨௫', 'இன்று 12:25');
- assert.equal(moment(a).add({h: 1}).calendar(), 'இன்று ௧௩:௦௦', 'இன்று 13:00');
- assert.equal(moment(a).add({d: 1}).calendar(), 'நாளை ௧௨:௦௦', 'நாளை 12:00');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'இன்று ௧௧:௦௦', 'இன்று 11:00');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'நேற்று ௧௨:௦௦', 'நேற்று 12:00');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 0, 30]).format('a'), ' யாமம்', '(after) midnight');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), ' வைகறை', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), ' காலை', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), ' எற்பாடு', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), ' எற்பாடு', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), ' மாலை', 'late evening');
- assert.equal(moment([2011, 2, 23, 23, 30]).format('a'), ' யாமம்', '(before) midnight');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('te');
- test('parse', function (assert) {
- var tests = 'జనవరి జన._ఫిబ్రవరి ఫిబ్ర._మార్చి మార్చి_ఏప్రిల్ ఏప్రి._మే మే_జూన్ జూన్_జూలై జూలై_ఆగస్టు ఆగ._సెప్టెంబర్ సెప్._అక్టోబర్ అక్టో._నవంబర్ నవ._డిసెంబర్ డిసె.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do తేదీ MMMM YYYY, a h:mm:ss', 'ఆదివారం, 14వ తేదీ ఫిబ్రవరి 2010, మధ్యాహ్నం 3:25:50'],
- ['ddd, a h గంటలు', 'ఆది, మధ్యాహ్నం 3 గంటలు'],
- ['M Mo నెల MM MMMM MMM', '2 2వ నెల 02 ఫిబ్రవరి ఫిబ్ర.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14వ 14'],
- ['d do dddd ddd dd', '0 0వ ఆదివారం ఆది ఆ'],
- ['DDD DDDo DDDD', '45 45వ 045'],
- ['w wo ww', '8 8వ 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'మధ్యాహ్నం మధ్యాహ్నం'],
- ['LTS', 'మధ్యాహ్నం 3:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 ఫిబ్రవరి 2010'],
- ['LLL', '14 ఫిబ్రవరి 2010, మధ్యాహ్నం 3:25'],
- ['LLLL', 'ఆదివారం, 14 ఫిబ్రవరి 2010, మధ్యాహ్నం 3:25'],
- ['l', '14/2/2010'],
- ['ll', '14 ఫిబ్ర. 2010'],
- ['lll', '14 ఫిబ్ర. 2010, మధ్యాహ్నం 3:25'],
- ['llll', 'ఆది, 14 ఫిబ్ర. 2010, మధ్యాహ్నం 3:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1వ', '1వ');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2వ', '2వ');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3వ', '3వ');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4వ', '4వ');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5వ', '5వ');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6వ', '6వ');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7వ', '7వ');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8వ', '8వ');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9వ', '9వ');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10వ', '10వ');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11వ', '11వ');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12వ', '12వ');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13వ', '13వ');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14వ', '14వ');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15వ', '15వ');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16వ', '16వ');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17వ', '17వ');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18వ', '18వ');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19వ', '19వ');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20వ', '20వ');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21వ', '21వ');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22వ', '22వ');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23వ', '23వ');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24వ', '24వ');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25వ', '25వ');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26వ', '26వ');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27వ', '27వ');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28వ', '28వ');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29వ', '29వ');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30వ', '30వ');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31వ', '31వ');
- });
- test('format month', function (assert) {
- var expected = 'జనవరి జన._ఫిబ్రవరి ఫిబ్ర._మార్చి మార్చి_ఏప్రిల్ ఏప్రి._మే మే_జూన్ జూన్_జూలై జూలై_ఆగస్టు ఆగ._సెప్టెంబర్ సెప్._అక్టోబర్ అక్టో._నవంబర్ నవ._డిసెంబర్ డిసె.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ఆదివారం ఆది ఆ_సోమవారం సోమ సో_మంగళవారం మంగళ మం_బుధవారం బుధ బు_గురువారం గురు గు_శుక్రవారం శుక్ర శు_శనివారం శని శ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'కొన్ని క్షణాలు', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ఒక నిమిషం', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ఒక నిమిషం', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 నిమిషాలు', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 నిమిషాలు', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ఒక గంట', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ఒక గంట', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 గంటలు', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 గంటలు', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 గంటలు', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ఒక రోజు', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ఒక రోజు', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 రోజులు', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ఒక రోజు', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 రోజులు', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 రోజులు', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ఒక నెల', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ఒక నెల', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ఒక నెల', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 నెలలు', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 నెలలు', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 నెలలు', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ఒక నెల', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 నెలలు', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ఒక సంవత్సరం', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 సంవత్సరాలు', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ఒక సంవత్సరం', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 సంవత్సరాలు', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'కొన్ని క్షణాలు లో', 'prefix');
- assert.equal(moment(0).from(30000), 'కొన్ని క్షణాలు క్రితం', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'కొన్ని క్షణాలు క్రితం', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'కొన్ని క్షణాలు లో', 'కొన్ని క్షణాలు లో');
- assert.equal(moment().add({d: 5}).fromNow(), '5 రోజులు లో', '5 రోజులు లో');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'నేడు మధ్యాహ్నం 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'నేడు మధ్యాహ్నం 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 3}).calendar(), 'నేడు మధ్యాహ్నం 3:00', 'Now plus 3 hours');
- assert.equal(moment(a).add({d: 1}).calendar(), 'రేపు మధ్యాహ్నం 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'నేడు మధ్యాహ్నం 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'నిన్న మధ్యాహ్నం 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[గత] dddd[,] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[గత] dddd[,] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[గత] dddd[,] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'రాత్రి', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'ఉదయం', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'మధ్యాహ్నం', 'during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'సాయంత్రం', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'సాయంత్రం', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'రాత్రి', 'night');
- assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'రాత్రి', 'before dawn');
- assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'ఉదయం', 'morning');
- assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'మధ్యాహ్నం', ' during day');
- assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'సాయంత్రం', 'evening');
- assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'సాయంత్రం', 'late evening');
- assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'రాత్రి', 'night');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1వ', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1వ', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2వ', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2వ', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3వ', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tet');
- test('parse', function (assert) {
- var tests = 'Janeiru Jan_Fevereiru Fev_Marsu Mar_Abril Abr_Maiu Mai_Juniu Jun_Juliu Jul_Augustu Aug_Setembru Set_Outubru Out_Novembru Nov_Dezembru Dez'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingu, Fevereiru 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'Dom, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 Fevereiru Fev'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th Domingu Dom Do'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '6 6th 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 Fevereiru 2010'],
- ['LLL', '14 Fevereiru 2010 15:25'],
- ['LLLL', 'Domingu, 14 Fevereiru 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Fev 2010'],
- ['lll', '14 Fev 2010 15:25'],
- ['llll', 'Dom, 14 Fev 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var expected = 'Janeiru Jan_Fevereiru Fev_Marsu Mar_Abril Abr_Maiu Mai_Juniu Jun_Juliu Jul_Augustu Aug_Setembru Set_Outubru Out_Novembru Nov_Dezembru Dez'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Domingu Dom Do_Segunda Seg Seg_Tersa Ters Te_Kuarta Kua Ku_Kinta Kint Ki_Sexta Sext Sex_Sabadu Sab Sa'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'minutu balun', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutu ida', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutu ida', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'minutus 2', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'minutus 44', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'horas ida', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'horas ida', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'horas 2', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'horas 5', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'horas 21', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'loron ida', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'loron ida', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'loron 2', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'loron ida', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'loron 5', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'loron 25', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'fulan ida', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'fulan ida', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'fulan ida', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'fulan 2', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'fulan 2', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'fulan 3', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'fulan ida', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'fulan 5', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'tinan ida', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'tinan 2', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'tinan ida', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'tinan 5', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'iha minutu balun', 'prefix');
- assert.equal(moment(0).from(30000), 'minutu balun liuba', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'minutu balun liuba', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'iha minutu balun', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'iha loron 5', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Ohin iha 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Ohin iha 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Ohin iha 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Aban iha 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Ohin iha 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Horiseik iha 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [iha] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [iha] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [iha] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [semana kotuk] [iha] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [semana kotuk] [iha] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [semana kotuk] [iha] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('th');
- test('parse', function (assert) {
- var tests = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'],
- ['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'],
- ['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ ก.พ.'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'หลังเที่ยง หลังเที่ยง'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 กุมภาพันธ์ 2010'],
- ['LLL', '14 กุมภาพันธ์ 2010 เวลา 15:25'],
- ['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 ก.พ. 2010'],
- ['lll', '14 ก.พ. 2010 เวลา 15:25'],
- ['llll', 'วันอาทิตย์ที่ 14 ก.พ. 2010 เวลา 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ไม่กี่วินาที', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 นาที', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 นาที', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 นาที', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 นาที', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 ชั่วโมง', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 ชั่วโมง', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ชั่วโมง', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ชั่วโมง', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ชั่วโมง', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 วัน', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 วัน', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 วัน', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 วัน', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 วัน', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 วัน', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 เดือน', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 เดือน', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 เดือน', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 เดือน', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 เดือน', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 เดือน', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 เดือน', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 เดือน', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 ปี', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ปี', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 ปี', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ปี', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'อีก ไม่กี่วินาที', 'prefix');
- assert.equal(moment(0).from(30000), 'ไม่กี่วินาทีที่แล้ว', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ไม่กี่วินาทีที่แล้ว', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'อีก ไม่กี่วินาที', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'อีก 5 วัน', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'วันนี้ เวลา 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'วันนี้ เวลา 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'วันนี้ เวลา 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'พรุ่งนี้ เวลา 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'วันนี้ เวลา 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'เมื่อวานนี้ เวลา 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tl-ph');
- test('parse', function (assert) {
- var tests = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split('_'),
- i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Linggo, Pebrero 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'Lin, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Linggo Lin Li'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '02/14/2010'],
- ['LL', 'Pebrero 14, 2010'],
- ['LLL', 'Pebrero 14, 2010 15:25'],
- ['LLLL', 'Linggo, Pebrero 14, 2010 15:25'],
- ['l', '2/14/2010'],
- ['ll', 'Peb 14, 2010'],
- ['lll', 'Peb 14, 2010 15:25'],
- ['llll', 'Lin, Peb 14, 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ilang segundo', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'isang minuto', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'isang minuto', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuto', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuto', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'isang oras', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'isang oras', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oras', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oras', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oras', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'isang araw', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'isang araw', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 araw', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'isang araw', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 araw', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 araw', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'isang buwan', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'isang buwan', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'isang buwan', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 buwan', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 buwan', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 buwan', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'isang buwan', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 buwan', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'isang taon', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taon', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'isang taon', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taon', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix');
- assert.equal(moment(0).from(30000), 'ilang segundo ang nakalipas', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'sa loob ng ilang segundo', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'sa loob ng 5 araw', 'in 5 days');
- });
- test('same day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), '12:00 ngayong araw', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), '12:25 ngayong araw', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), '13:00 ngayong araw', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Bukas ng 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), '11:00 ngayong araw', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), '12:00 kahapon', 'yesterday at the same time');
- });
- test('same next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('LT [sa susunod na] dddd'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('LT [sa susunod na] dddd'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('LT [sa susunod na] dddd'), 'Today + ' + i + ' days end of day');
- }
- });
- test('same last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('LT [noong nakaraang] dddd'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('LT [noong nakaraang] dddd'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('LT [noong nakaraang] dddd'), 'Today - ' + i + ' days end of day');
- }
- });
- test('same all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tlh');
- //Current parsing method doesn't allow parsing correctly months 10, 11 and 12.
- /*
- * test('parse', function (assert) {
- var tests = 'tera’ jar wa’.jar wa’_tera’ jar cha’.jar cha’_tera’ jar wej.jar wej_tera’ jar loS.jar loS_tera’ jar vagh.jar vagh_tera’ jar jav.jar jav_tera’ jar Soch.jar Soch_tera’ jar chorgh.jar chorgh_tera’ jar Hut.jar Hut_tera’ jar wa’maH.jar wa’maH_tera’ jar wa’maH wa’.jar wa’maH wa’_tera’ jar wa’maH cha’.jar wa’maH cha’'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split('.');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- */
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'lojmItjaj, tera’ jar cha’ 14. 2010, 3:25:50 pm'],
- ['ddd, hA', 'lojmItjaj, 3PM'],
- ['M Mo MM MMMM MMM', '2 2. 02 tera’ jar cha’ jar cha’'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. lojmItjaj lojmItjaj lojmItjaj'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[DIS jaj] DDDo', 'DIS jaj 45.'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 tera’ jar cha’ 2010'],
- ['LLL', '14 tera’ jar cha’ 2010 15:25'],
- ['LLLL', 'lojmItjaj, 14 tera’ jar cha’ 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 jar cha’ 2010'],
- ['lll', '14 jar cha’ 2010 15:25'],
- ['llll', 'lojmItjaj, 14 jar cha’ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'tera’ jar wa’ jar wa’_tera’ jar cha’ jar cha’_tera’ jar wej jar wej_tera’ jar loS jar loS_tera’ jar vagh jar vagh_tera’ jar jav jar jav_tera’ jar Soch jar Soch_tera’ jar chorgh jar chorgh_tera’ jar Hut jar Hut_tera’ jar wa’maH jar wa’maH_tera’ jar wa’maH wa’ jar wa’maH wa’_tera’ jar wa’maH cha’ jar wa’maH cha’'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'lojmItjaj lojmItjaj lojmItjaj_DaSjaj DaSjaj DaSjaj_povjaj povjaj povjaj_ghItlhjaj ghItlhjaj ghItlhjaj_loghjaj loghjaj loghjaj_buqjaj buqjaj buqjaj_ghInjaj ghInjaj ghInjaj'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'puS lup', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'wa’ tup', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'wa’ tup', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'cha’ tup', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'loSmaH loS tup', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'wa’ rep', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'wa’ rep', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'cha’ rep', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'vagh rep', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'cha’maH wa’ rep', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'wa’ jaj', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'wa’ jaj', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'cha’ jaj', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'wa’ jaj', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'vagh jaj', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'cha’maH vagh jaj', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'wa’ jar', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'wa’ jar', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'wa’ jar', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'cha’ jar', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'cha’ jar', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'wej jar', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'wa’ jar', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'vagh jar', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'wa’ DIS', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'cha’ DIS', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'wa’ DIS', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'vagh DIS', '5 years = 5 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), 'wa’vatlh wa’maH cha’ DIS', '112 years = 112 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), 'wa’vatlh cha’maH cha’ DIS', '122 years = 122 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), 'cha’vatlh wa’maH wej DIS', '213 years = 213 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), 'cha’vatlh cha’maH wej DIS', '223 years = 223 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'puS lup pIq', 'suffix');
- assert.equal(moment(0).from(30000), 'puS lup ret', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'puS lup ret', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'puS lup pIq', 'in a few seconds');
- assert.equal(moment().add({h: 1}).fromNow(), 'wa’ rep pIq', 'in an hour');
- assert.equal(moment().add({d: 5}).fromNow(), 'vagh leS', 'in 5 days');
- assert.equal(moment().add({M: 2}).fromNow(), 'cha’ waQ', 'in 2 months');
- assert.equal(moment().add({y: 1}).fromNow(), 'wa’ nem', 'in a year');
- assert.equal(moment().add({s: -30}).fromNow(), 'puS lup ret', 'a few seconds ago');
- assert.equal(moment().add({h: -1}).fromNow(), 'wa’ rep ret', 'an hour ago');
- assert.equal(moment().add({d: -5}).fromNow(), 'vagh Hu’', '5 days ago');
- assert.equal(moment().add({M: -2}).fromNow(), 'cha’ wen', '2 months ago');
- assert.equal(moment().add({y: -1}).fromNow(), 'wa’ ben', 'a year ago');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'DaHjaj 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'DaHjaj 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'DaHjaj 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'wa’leS 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'DaHjaj 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'wa’Hu’ 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('LLL'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('LLL'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('LLL'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('LLL'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('LLL'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('LLL'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tr');
- test('parse', function (assert) {
- var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Pazar, Şubat 14\'üncü 2010, 3:25:50 pm'],
- ['ddd, hA', 'Paz, 3PM'],
- ['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14\'üncü 14'],
- ['d do dddd ddd dd', '0 0\'ıncı Pazar Paz Pz'],
- ['DDD DDDo DDDD', '45 45\'inci 045'],
- ['w wo ww', '7 7\'nci 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[yılın] DDDo [günü]', 'yılın 45\'inci günü'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 Şubat 2010'],
- ['LLL', '14 Şubat 2010 15:25'],
- ['LLLL', 'Pazar, 14 Şubat 2010 15:25'],
- ['l', '14.2.2010'],
- ['ll', '14 Şub 2010'],
- ['lll', '14 Şub 2010 15:25'],
- ['llll', 'Paz, 14 Şub 2010 15:25']
- ],
- DDDo = [
- [359, '360\'ıncı'],
- [199, '200\'üncü'],
- [149, '150\'nci']
- ],
- dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- DDDoDt,
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- for (i = 0; i < DDDo.length; i++) {
- DDDoDt = moment([2010]);
- assert.equal(DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1\'inci', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2\'nci', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3\'üncü', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4\'üncü', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5\'inci', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6\'ncı', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7\'nci', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8\'inci', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9\'uncu', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10\'uncu', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11\'inci', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12\'nci', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13\'üncü', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14\'üncü', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15\'inci', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16\'ncı', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17\'nci', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18\'inci', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19\'uncu', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20\'nci', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21\'inci', '21th');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22\'nci', '22th');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23\'üncü', '23th');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24\'üncü', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25\'inci', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26\'ncı', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27\'nci', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28\'inci', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29\'uncu', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30\'uncu', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31\'inci', '31st');
- });
- test('format month', function (assert) {
- var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'birkaç saniye', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dakika', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dakika', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dakika', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dakika', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'bir saat', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'bir saat', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 saat', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 saat', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 saat', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'bir gün', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'bir gün', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 gün', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'bir gün', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 gün', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 gün', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'bir ay', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'bir ay', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'bir ay', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ay', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ay', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ay', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'bir ay', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ay', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bir yıl', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 yıl', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir yıl', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 yıl', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'birkaç saniye sonra', 'prefix');
- assert.equal(moment(0).from(30000), 'birkaç saniye önce', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'birkaç saniye önce', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'birkaç saniye sonra', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'bugün saat 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'bugün saat 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'bugün saat 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'yarın saat 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'bugün saat 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'dün 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1\'inci', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1\'inci', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2\'nci', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2\'nci', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3\'üncü', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tzl');
- test('parse', function (assert) {
- var tests = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h.mm.ss a', 'Súladi, Fevraglh 14. 2010, 3.25.50 d\'o'],
- ['ddd, hA', 'Súl, 3D\'O'],
- ['M Mo MM MMMM MMM', '2 2. 02 Fevraglh Fev'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14. 14'],
- ['d do dddd ddd dd', '0 0. Súladi Súl Sú'],
- ['DDD DDDo DDDD', '45 45. 045'],
- ['w wo ww', '6 6. 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'd\'o D\'O'],
- ['[the] DDDo [day of the year]', 'the 45. day of the year'],
- ['LTS', '15.25.50'],
- ['L', '14.02.2010'],
- ['LL', '14. Fevraglh dallas 2010'],
- ['LLL', '14. Fevraglh dallas 2010 15.25'],
- ['LLLL', 'Súladi, li 14. Fevraglh dallas 2010 15.25'],
- ['l', '14.2.2010'],
- ['ll', '14. Fev dallas 2010'],
- ['lll', '14. Fev dallas 2010 15.25'],
- ['llll', 'Súl, li 14. Fev dallas 2010 15.25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.');
- });
- test('format month', function (assert) {
- var expected = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Súladi Súl Sú_Lúneçi Lún Lú_Maitzi Mai Ma_Márcuri Már Má_Xhúadi Xhú Xh_Viénerçi Vié Vi_Sáturi Sát Sá'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'viensas secunds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n míut', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n míut', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 míuts', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 míuts', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n þora', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n þora', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 þoras', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 þoras', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 þoras', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n ziua', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n ziua', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ziuas', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n ziua', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ziuas', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ziuas', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n mes', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n mes', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n mes', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesen', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesen', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesen', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n mes', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesen', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n ar', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ars', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n ar', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ars', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'osprei viensas secunds', 'prefix');
- assert.equal(moment(0).from(30000), 'ja\'iensas secunds', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ja\'iensas secunds', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'osprei viensas secunds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'osprei 5 ziuas', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'oxhi à 12.00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'oxhi à 12.25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'oxhi à 13.00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'demà à 12.00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'oxhi à 11.00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieiri à 12.00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- // Monday is the first day of the week.
- // The week that contains Jan 4th is the first week of the year.
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tzm-latn');
- test('parse', function (assert) {
- var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'asamas, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 asamas asamas asamas'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 brˤayrˤ 2010'],
- ['LLL', '14 brˤayrˤ 2010 15:25'],
- ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 brˤayrˤ 2010'],
- ['lll', '14 brˤayrˤ 2010 15:25'],
- ['llll', 'asamas 14 brˤayrˤ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'imik', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuḍ', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuḍ', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuḍ', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuḍ', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'saɛa', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'saɛa', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tassaɛin', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tassaɛin', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tassaɛin', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ass', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ass', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ossan', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ass', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ossan', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ossan', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ayowr', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ayowr', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ayowr', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 iyyirn', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 iyyirn', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 iyyirn', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ayowr', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 iyyirn', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'asgas', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 isgasn', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'asgas', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 isgasn', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'dadkh s yan imik', 'prefix');
- assert.equal(moment(0).from(30000), 'yan imik', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'yan imik', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'dadkh s yan imik', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'dadkh s yan 5 ossan', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'asdkh g 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'asdkh g 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'asdkh g 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'aska g 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'asdkh g 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'assant g 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('tzm');
- test('parse', function (assert) {
- var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'ⴰⵙⴰⵎⴰⵙ, 3PM'],
- ['M Mo MM MMMM MMM', '2 2 02 ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '8 8 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45 day of the year'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 ⴱⵕⴰⵢⵕ 2010'],
- ['LLL', '14 ⴱⵕⴰⵢⵕ 2010 15:25'],
- ['LLLL', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 ⴱⵕⴰⵢⵕ 2010'],
- ['lll', '14 ⴱⵕⴰⵢⵕ 2010 15:25'],
- ['llll', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ⵉⵎⵉⴽ', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ⵎⵉⵏⵓⴺ', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ⵎⵉⵏⵓⴺ', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 ⵎⵉⵏⵓⴺ', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 ⵎⵉⵏⵓⴺ', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ⵙⴰⵄⴰ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ⵙⴰⵄⴰ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ⵜⴰⵙⵙⴰⵄⵉⵏ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ⵜⴰⵙⵙⴰⵄⵉⵏ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ⵜⴰⵙⵙⴰⵄⵉⵏ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ⴰⵙⵙ', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ⴰⵙⵙ', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 oⵙⵙⴰⵏ', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ⴰⵙⵙ', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 oⵙⵙⴰⵏ', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 oⵙⵙⴰⵏ', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ⴰⵢoⵓⵔ', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ⴰⵢoⵓⵔ', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ⴰⵢoⵓⵔ', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ⵉⵢⵢⵉⵔⵏ', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ⵉⵢⵢⵉⵔⵏ', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ⵉⵢⵢⵉⵔⵏ', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ⴰⵢoⵓⵔ', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ⵉⵢⵢⵉⵔⵏ', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ⴰⵙⴳⴰⵙ', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ⵉⵙⴳⴰⵙⵏ', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ⴰⵙⴳⴰⵙ', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ⵉⵙⴳⴰⵙⵏ', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', 'prefix');
- assert.equal(moment(0).from(30000), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰⵏ', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'ⴰⵙⴷⵅ ⴴ 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'ⴰⵙⴷⵅ ⴴ 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'ⴰⵙⴷⵅ ⴴ 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'ⴰⵙⴽⴰ ⴴ 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'ⴰⵙⴷⵅ ⴴ 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'ⴰⵚⴰⵏⵜ ⴴ 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('uk');
- test('parse', function (assert) {
- var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'],
- ['ddd, h A', 'нд, 3 дня'],
- ['M Mo MM MMMM MMM', '2 2-й 02 лютий лют'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14-го 14'],
- ['d do dddd ddd dd', '0 0-й неділя нд нд'],
- ['DDD DDDo DDDD', '45 45-й 045'],
- ['w wo ww', '7 7-й 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'дня дня'],
- ['DDDo [день року]', '45-й день року'],
- ['LTS', '15:25:50'],
- ['L', '14.02.2010'],
- ['LL', '14 лютого 2010 р.'],
- ['LLL', '14 лютого 2010 р., 15:25'],
- ['LLLL', 'неділя, 14 лютого 2010 р., 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format meridiem', function (assert) {
- assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночі', 'night');
- assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночі', 'night');
- assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'ранку', 'morning');
- assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'ранку', 'morning');
- assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon');
- assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon');
- assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечора', 'evening');
- assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечора', 'evening');
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й');
- });
- test('format month', function (assert) {
- var expected = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format month case', function (assert) {
- var months = {
- 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
- 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
- }, i;
- for (i = 0; i < 12; i++) {
- assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]);
- assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср ср_четвер чт чт_п’ятниця пт пт_субота сб сб'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'декілька секунд', '44 seconds = seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'хвилина', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'хвилина', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 хвилини', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 хвилини', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'годину', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'годину', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 години', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 годин', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 година', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'день', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'день', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дні', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'день', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 днів', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 днів', '11 days = 11 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 день', '21 days = 21 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 днів', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'місяць', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'місяць', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'місяць', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 місяці', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 місяці', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 місяці', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'місяць', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 місяців', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'рік', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 роки', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'рік', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 років', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'за декілька секунд', 'prefix');
- assert.equal(moment(0).from(30000), 'декілька секунд тому', 'suffix');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'за декілька секунд', 'in seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'за 5 днів', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Сьогодні о 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Сьогодні о 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Сьогодні о 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Завтра о 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 2}).calendar(), 'Сьогодні о 10:00', 'Now minus 2 hours');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчора о 12:00', 'yesterday at the same time');
- // A special case for Ukrainian since 11 hours have different preposition
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сьогодні об 11:00', 'same day at 11 o\'clock');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[У] dddd [о' + (m.hours() === 11 ? 'б' : '') + '] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[У] dddd [о] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[У] dddd [о] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- function makeFormat(d) {
- switch (d.day()) {
- case 0:
- case 3:
- case 5:
- case 6:
- return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT';
- case 1:
- case 2:
- case 4:
- return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT';
- }
- }
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-й', 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-й', 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-й', 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-й', 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-й', 'Jan 9 2012 should be week 3');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('ur');
- var months = [
- 'جنوری',
- 'فروری',
- 'مارچ',
- 'اپریل',
- 'مئی',
- 'جون',
- 'جولائی',
- 'اگست',
- 'ستمبر',
- 'اکتوبر',
- 'نومبر',
- 'دسمبر'
- ];
- var days = [
- 'اتوار',
- 'پیر',
- 'منگل',
- 'بدھ',
- 'جمعرات',
- 'جمعہ',
- 'ہفتہ'
- ];
- test('parse', function (assert) {
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (var i = 0; i < 12; i++) {
- equalTest(months[i], 'MMM', i);
- equalTest(months[i], 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'اتوار، فروری 14 2010، 3:25:50 شام'],
- ['ddd, hA', 'اتوار، 3شام'],
- ['M Mo MM MMMM MMM', '2 2 02 فروری فروری'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 اتوار اتوار اتوار'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'شام شام'],
- ['[سال کا] DDDo[واں دن]', 'سال کا 45واں دن'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 فروری 2010'],
- ['LLL', '14 فروری 2010 15:25'],
- ['LLLL', 'اتوار، 14 فروری 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 فروری 2010'],
- ['lll', '14 فروری 2010 15:25'],
- ['llll', 'اتوار، 14 فروری 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- for (var i = 0; i < months.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), months[i] + ' ' + months[i], months[i] + ' ' + months[i]);
- }
- });
- test('format week', function (assert) {
- for (var i = 0; i < days.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), days[i] + ' ' + days[i] + ' ' + days[i], days[i] + ' ' + days[i] + ' ' + days[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'چند سیکنڈ', '44 seconds = چند سیکنڈ');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ایک منٹ', '45 seconds = ایک منٹ');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ایک منٹ', '89 seconds = ایک منٹ');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 منٹ', '90 seconds = 2 منٹ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 منٹ', '44 minutes = 44 منٹ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ایک گھنٹہ', '45 minutes = ایک گھنٹہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ایک گھنٹہ', '89 minutes = ایک گھنٹہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 گھنٹے', '90 minutes = 2 گھنٹے');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 گھنٹے', '5 hours = 5 گھنٹے');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 گھنٹے', '21 hours = 21 گھنٹے');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ایک دن', '22 hours = ایک دن');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ایک دن', '35 hours = ایک دن');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 دن', '36 hours = 2 دن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ایک دن', '1 day = ایک دن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 دن', '5 days = 5 دن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 دن', '25 days = 25 دن');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ایک ماہ', '26 days = ایک ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ایک ماہ', '30 days = ایک ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ایک ماہ', '43 days = ایک ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ماہ', '46 days = 2 ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ماہ', '75 days = 2 ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ماہ', '76 days = 3 ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ایک ماہ', '1 month = ایک ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ماہ', '5 months = 5 ماہ');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ایک سال', '345 days = ایک سال');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سال', '548 days = 2 سال');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ایک سال', '1 year = ایک سال');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سال', '5 years = 5 سال');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'چند سیکنڈ بعد', 'prefix');
- assert.equal(moment(0).from(30000), 'چند سیکنڈ قبل', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'چند سیکنڈ قبل', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'چند سیکنڈ بعد', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 دن بعد', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'آج بوقت 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'آج بوقت 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'آج بوقت 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'کل بوقت 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'آج بوقت 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'گذشتہ روز بوقت 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [بوقت] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [بوقت] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [بوقت] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[گذشتہ] dddd [بوقت] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[گذشتہ] dddd [بوقت] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[گذشتہ] dddd [بوقت] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('uz-latn');
- test('parse', function (assert) {
- var tests = 'Yanvar Yan_Fevral Fev_Mart Mar_Aprel Apr_May May_Iyun Iyun_Iyul Iyul_Avgust Avg_Sentabr Sen_Oktabr Okt_Noyabr Noy_Dekabr Dek'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do-MMMM YYYY, h:mm:ss', 'Yakshanba, 14-Fevral 2010, 3:25:50'],
- ['ddd, h:mm', 'Yak, 3:25'],
- ['M Mo MM MMMM MMM', '2 2 02 Fevral Fev'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Yakshanba Yak Ya'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[yilning] DDDo-[kuni]', 'yilning 45-kuni'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 Fevral 2010'],
- ['LLL', '14 Fevral 2010 15:25'],
- ['LLLL', '14 Fevral 2010, Yakshanba 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Fev 2010'],
- ['lll', '14 Fev 2010 15:25'],
- ['llll', '14 Fev 2010, Yak 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2016, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2016, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2016, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2016, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2016, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2016, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2016, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2016, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2016, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2016, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2016, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2016, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2016, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2016, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2016, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2016, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2016, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2016, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2016, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2016, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2016, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2016, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2016, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2016, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2016, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2016, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2016, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2016, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2016, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2016, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2016, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'Yanvar Yan_Fevral Fev_Mart Mar_Aprel Apr_May May_Iyun Iyun_Iyul Iyul_Avgust Avg_Sentabr Sen_Oktabr Okt_Noyabr Noy_Dekabr Dek'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2016, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Yakshanba Yak Ya_Dushanba Dush Du_Seshanba Sesh Se_Chorshanba Chor Cho_Payshanba Pay Pa_Juma Jum Ju_Shanba Shan Sha'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2016, 0, 3 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2017, 1, 28]);
- assert.equal(start.from(moment([2017, 1, 28]).add({s: 44}), true), 'soniya', '44 soniya = soniya');
- assert.equal(start.from(moment([2017, 1, 28]).add({s: 45}), true), 'bir daqiqa', '45 soniya = bir daqiqa');
- assert.equal(start.from(moment([2017, 1, 28]).add({s: 89}), true), 'bir daqiqa', '89 soniya = bir daqiqa');
- assert.equal(start.from(moment([2017, 1, 28]).add({s: 90}), true), '2 daqiqa', '90 soniya = 2 daqiqa');
- assert.equal(start.from(moment([2017, 1, 28]).add({m: 44}), true), '44 daqiqa', '44 daqiqa = 44 daqiqa');
- assert.equal(start.from(moment([2017, 1, 28]).add({m: 45}), true), 'bir soat', '45 minut = bir soat');
- assert.equal(start.from(moment([2017, 1, 28]).add({m: 89}), true), 'bir soat', '89 minut = bir soat');
- assert.equal(start.from(moment([2017, 1, 28]).add({m: 90}), true), '2 soat', '90 minut = 2 soat');
- assert.equal(start.from(moment([2017, 1, 28]).add({h: 5}), true), '5 soat', '5 soat = 5 soat');
- assert.equal(start.from(moment([2017, 1, 28]).add({h: 21}), true), '21 soat', '21 soat = 21 soat');
- assert.equal(start.from(moment([2017, 1, 28]).add({h: 22}), true), 'bir kun', '22 soat = bir kun');
- assert.equal(start.from(moment([2017, 1, 28]).add({h: 35}), true), 'bir kun', '35 soat = bir kun');
- assert.equal(start.from(moment([2017, 1, 28]).add({h: 36}), true), '2 kun', '36 soat = 2 kun');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 1}), true), 'bir kun', '1 kun = 1 kun');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 5}), true), '5 kun', '5 kun = 5 kun');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 25}), true), '25 kun', '25 kun = 25 kun');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 26}), true), 'bir oy', '26 kun = bir oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 30}), true), 'bir oy', '30 kun = bir oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 43}), true), 'bir oy', '45 kun = bir oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 46}), true), '2 oy', '46 kun = 2 oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 74}), true), '2 oy', '75 kun = 2 oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 76}), true), '3 oy', '76 kun = 3 oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({M: 1}), true), 'bir oy', 'bir oy = bir oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({M: 5}), true), '5 oy', '5 oy = 5 oy');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 345}), true), 'bir yil', '345 kun = bir yil');
- assert.equal(start.from(moment([2017, 1, 28]).add({d: 548}), true), '2 yil', '548 kun = 2 yil');
- assert.equal(start.from(moment([2017, 1, 28]).add({y: 1}), true), 'bir yil', '1 yil = bir yil');
- assert.equal(start.from(moment([2017, 1, 28]).add({y: 5}), true), '5 yil', '5 yil = 5 yil');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'Yaqin soniya ichida', 'prefix');
- assert.equal(moment(0).from(30000), 'Bir necha soniya oldin', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'Bir necha soniya oldin', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'Yaqin soniya ichida', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'Yaqin 5 kun ichida', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Bugun soat 12:00 da', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Bugun soat 12:25 da', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Bugun soat 13:00 da', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Ertaga 12:00 da', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Bugun soat 11:00 da', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kecha soat 12:00 da', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [kuni soat] LT [da]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [kuni soat] LT [da]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [kuni soat] LT [da]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[O\'tgan] dddd [kuni soat] LT [da]'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[O\'tgan] dddd [kuni soat] LT [da]'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[O\'tgan] dddd [kuni soat] LT [da]'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('uz');
- test('parse', function (assert) {
- var tests = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-феврал 2010, 3:25:50'],
- ['ddd, h:mm', 'Якш, 3:25'],
- ['M Mo MM MMMM MMM', '2 2 02 феврал фев'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 Якшанба Якш Як'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '7 7 07'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[йилнинг] DDDo-[куни]', 'йилнинг 45-куни'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 феврал 2010'],
- ['LLL', '14 феврал 2010 15:25'],
- ['LLLL', '14 феврал 2010, Якшанба 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 фев 2010'],
- ['lll', '14 фев 2010 15:25'],
- ['llll', '14 фев 2010, Якш 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var expected = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Се_Чоршанба Чор Чо_Пайшанба Пай Па_Жума Жум Жу_Шанба Шан Ша'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'фурсат', '44 секунд = фурсат');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'бир дакика', '45 секунд = бир дакика');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'бир дакика', '89 секунд = бир дакика');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 дакика', '90 секунд = 2 дакика');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 дакика', '44 дакика = 44 дакика');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'бир соат', '45 минут = бир соат');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'бир соат', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 соат', '90 минут = 2 соат');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 соат', '5 соат = 5 соат');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 соат', '21 соат = 21 соат');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'бир кун', '22 соат = бир кун');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'бир кун', '35 соат = бир кун');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 соат = 2 кун');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'бир кун', '1 кун = 1 кун');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 кун = 5 кун');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 кун = 25 кун');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'бир ой', '26 кун = бир ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'бир ой', '30 кун = бир ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'бир ой', '45 кун = бир ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ой', '46 кун = 2 ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ой', '75 кун = 2 ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ой', '76 кун = 3 ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'бир ой', 'бир ой = бир ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ой', '5 ой = 5 ой');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'бир йил', '345 кун = бир йил');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 йил', '548 кун = 2 йил');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'бир йил', '1 йил = бир йил');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 йил', '5 йил = 5 йил');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'Якин фурсат ичида', 'prefix');
- assert.equal(moment(0).from(30000), 'Бир неча фурсат олдин', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'Бир неча фурсат олдин', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'Якин фурсат ичида', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'Якин 5 кун ичида', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Бугун соат 12:00 да', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Бугун соат 12:25 да', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Бугун соат 13:00 да', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Эртага 12:00 да', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Бугун соат 11:00 да', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Кеча соат 12:00 да', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('vi');
- test('parse', function (assert) {
- var i,
- tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_');
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + i);
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(',');
- equalTest(tests[i][0], '[tháng] M', i);
- equalTest(tests[i][1], '[Th]M', i);
- equalTest(tests[i][0], '[tháng] MM', i);
- equalTest(tests[i][1], '[Th]MM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), '[THÁNG] M', i);
- equalTest(tests[i][1].toLocaleLowerCase(), '[TH]M', i);
- equalTest(tests[i][0].toLocaleUpperCase(), '[THÁNG] MM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), '[TH]MM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'chủ nhật, tháng 2 14 2010, 3:25:50 ch'],
- ['ddd, hA', 'CN, 3CH'],
- ['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 chủ nhật CN CN'],
- ['DDD DDDo DDDD', '45 45 045'],
- ['w wo ww', '6 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'ch CH'],
- ['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'],
- ['LTS', '15:25:50'],
- ['L', '14/02/2010'],
- ['LL', '14 tháng 2 năm 2010'],
- ['LLL', '14 tháng 2 năm 2010 15:25'],
- ['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 Th02 2010'],
- ['lll', '14 Th02 2010 15:25'],
- ['llll', 'CN, 14 Th02 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31');
- });
- test('format month', function (assert) {
- var i,
- expected = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var i,
- expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split('_');
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'vài giây', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'một phút', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'một phút', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 phút', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 phút', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'một giờ', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'một giờ', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 giờ', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 giờ', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 giờ', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'một ngày', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'một ngày', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ngày', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'một ngày', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ngày', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ngày', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'một tháng', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'một tháng', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'một tháng', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 tháng', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 tháng', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 tháng', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'một tháng', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 tháng', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'một năm', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 năm', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'một năm', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 năm', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'vài giây tới', 'prefix');
- assert.equal(moment(0).from(30000), 'vài giây trước', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'vài giây trước', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'vài giây tới', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 ngày tới', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Hôm nay lúc 12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Hôm nay lúc 12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Hôm nay lúc 13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Ngày mai lúc 12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hôm nay lúc 11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hôm qua lúc 12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('x-pseudo');
- test('parse', function (assert) {
- var tests = 'J~áñúá~rý J~áñ_F~ébrú~árý ~Féb_~Márc~h ~Már_Áp~ríl ~Ápr_~Máý ~Máý_~Júñé~ ~Júñ_Júl~ý ~Júl_Áú~gúst~ ~Áúg_Sép~témb~ér ~Sép_Ó~ctób~ér ~Óct_Ñ~óvém~bér ~Ñóv_~Décé~mbér ~Déc'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'S~úñdá~ý, F~ébrú~árý 14th 2010, 3:25:50 pm'],
- ['ddd, hA', 'S~úñ, 3PM'],
- ['M Mo MM MMMM MMM', '2 2nd 02 F~ébrú~árý ~Féb'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14th 14'],
- ['d do dddd ddd dd', '0 0th S~úñdá~ý S~úñ S~ú'],
- ['DDD DDDo DDDD', '45 45th 045'],
- ['w wo ww', '6 6th 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the 45th day of the year'],
- ['LT', '15:25'],
- ['L', '14/02/2010'],
- ['LL', '14 F~ébrú~árý 2010'],
- ['LLL', '14 F~ébrú~árý 2010 15:25'],
- ['LLLL', 'S~úñdá~ý, 14 F~ébrú~árý 2010 15:25'],
- ['l', '14/2/2010'],
- ['ll', '14 ~Féb 2010'],
- ['lll', '14 ~Féb 2010 15:25'],
- ['llll', 'S~úñ, 14 ~Féb 2010 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st');
- });
- test('format month', function (assert) {
- var expected = 'J~áñúá~rý J~áñ_F~ébrú~árý ~Féb_~Márc~h ~Már_Áp~ríl ~Ápr_~Máý ~Máý_~Júñé~ ~Júñ_Júl~ý ~Júl_Áú~gúst~ ~Áúg_Sép~témb~ér ~Sép_Ó~ctób~ér ~Óct_Ñ~óvém~bér ~Ñóv_~Décé~mbér ~Déc'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'S~úñdá~ý S~úñ S~ú_Mó~ñdáý~ ~Móñ Mó~_Túé~sdáý~ ~Túé Tú_Wéd~ñésd~áý ~Wéd ~Wé_T~húrs~dáý ~Thú T~h_~Fríd~áý ~Frí Fr~_S~átúr~dáý ~Sát Sá'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'á ~féw ~sécó~ñds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'á ~míñ~úté', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'á ~míñ~úté', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 m~íñú~tés', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 m~íñú~tés', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'á~ñ hó~úr', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'á~ñ hó~úr', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 h~óúrs', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 h~óúrs', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 h~óúrs', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'á ~dáý', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'á ~dáý', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 d~áýs', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'á ~dáý', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 d~áýs', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 d~áýs', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'á ~móñ~th', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'á ~móñ~th', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'á ~móñ~th', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 m~óñt~hs', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 m~óñt~hs', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 m~óñt~hs', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'á ~móñ~th', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 m~óñt~hs', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'á ~ýéár', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ý~éárs', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'á ~ýéár', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ý~éárs', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'í~ñ á ~féw ~sécó~ñds', 'prefix');
- assert.equal(moment(0).from(30000), 'á ~féw ~sécó~ñds á~gó', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'á ~féw ~sécó~ñds á~gó', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'í~ñ á ~féw ~sécó~ñds', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), 'í~ñ 5 d~áýs', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(2).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'T~ódá~ý át 02:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'T~ódá~ý át 02:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'T~ódá~ý át 03:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'T~ómó~rró~w át 02:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'T~ódá~ý át 01:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ý~ést~érdá~ý át 02:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [át] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [át] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [át] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[L~ást] dddd [át] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[L~ást] dddd [át] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[L~ást] dddd [át] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('yo');
- test('parse', function (assert) {
- var tests = 'Sẹ́rẹ́ Sẹ́r_Èrèlè Èrl_Ẹrẹ̀nà Ẹrn_Ìgbé Ìgb_Èbibi Èbi_Òkùdu Òkù_Agẹmo Agẹ_Ògún Ògú_Owewe Owe_Ọ̀wàrà Ọ̀wà_Bélú Bél_Ọ̀pẹ̀̀ Ọ̀pẹ̀̀'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, h:mm:ss a', 'Àìkú, Èrèlè ọjọ́ 14 2010, 3:25:50 pm'],
- ['ddd, hA', 'Àìk, 3PM'],
- ['M Mo MM MMMM MMM', '2 ọjọ́ 2 02 Èrèlè Èrl'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 ọjọ́ 14 14'],
- ['d do dddd ddd dd', '0 ọjọ́ 0 Àìkú Àìk Àì'],
- ['DDD DDDo DDDD', '45 ọjọ́ 45 045'],
- ['w wo ww', '6 ọjọ́ 6 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', 'pm PM'],
- ['[the] DDDo [day of the year]', 'the ọjọ́ 45 day of the year'],
- ['LTS', '3:25:50 PM'],
- ['L', '14/02/2010'],
- ['LL', '14 Èrèlè 2010'],
- ['LLL', '14 Èrèlè 2010 3:25 PM'],
- ['LLLL', 'Àìkú, 14 Èrèlè 2010 3:25 PM'],
- ['l', '14/2/2010'],
- ['ll', '14 Èrl 2010'],
- ['lll', '14 Èrl 2010 3:25 PM'],
- ['llll', 'Àìk, 14 Èrl 2010 3:25 PM']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format ordinal', function (assert) {
- assert.equal(moment([2011, 0, 1]).format('DDDo'), 'ọjọ́ 1', 'ọjọ́ 1');
- assert.equal(moment([2011, 0, 2]).format('DDDo'), 'ọjọ́ 2', 'ọjọ́ 2');
- assert.equal(moment([2011, 0, 3]).format('DDDo'), 'ọjọ́ 3', 'ọjọ́ 3');
- assert.equal(moment([2011, 0, 4]).format('DDDo'), 'ọjọ́ 4', 'ọjọ́ 4');
- assert.equal(moment([2011, 0, 5]).format('DDDo'), 'ọjọ́ 5', 'ọjọ́ 5');
- assert.equal(moment([2011, 0, 6]).format('DDDo'), 'ọjọ́ 6', 'ọjọ́ 6');
- assert.equal(moment([2011, 0, 7]).format('DDDo'), 'ọjọ́ 7', 'ọjọ́ 7');
- assert.equal(moment([2011, 0, 8]).format('DDDo'), 'ọjọ́ 8', 'ọjọ́ 8');
- assert.equal(moment([2011, 0, 9]).format('DDDo'), 'ọjọ́ 9', 'ọjọ́ 9');
- assert.equal(moment([2011, 0, 10]).format('DDDo'), 'ọjọ́ 10', 'ọjọ́ 10');
- assert.equal(moment([2011, 0, 11]).format('DDDo'), 'ọjọ́ 11', 'ọjọ́ 11');
- assert.equal(moment([2011, 0, 12]).format('DDDo'), 'ọjọ́ 12', 'ọjọ́ 12');
- assert.equal(moment([2011, 0, 13]).format('DDDo'), 'ọjọ́ 13', 'ọjọ́ 13');
- assert.equal(moment([2011, 0, 14]).format('DDDo'), 'ọjọ́ 14', 'ọjọ́ 14');
- assert.equal(moment([2011, 0, 15]).format('DDDo'), 'ọjọ́ 15', 'ọjọ́ 15');
- assert.equal(moment([2011, 0, 16]).format('DDDo'), 'ọjọ́ 16', 'ọjọ́ 16');
- assert.equal(moment([2011, 0, 17]).format('DDDo'), 'ọjọ́ 17', 'ọjọ́ 17');
- assert.equal(moment([2011, 0, 18]).format('DDDo'), 'ọjọ́ 18', 'ọjọ́ 18');
- assert.equal(moment([2011, 0, 19]).format('DDDo'), 'ọjọ́ 19', 'ọjọ́ 19');
- assert.equal(moment([2011, 0, 20]).format('DDDo'), 'ọjọ́ 20', 'ọjọ́ 20');
- assert.equal(moment([2011, 0, 21]).format('DDDo'), 'ọjọ́ 21', 'ọjọ́ 21');
- assert.equal(moment([2011, 0, 22]).format('DDDo'), 'ọjọ́ 22', 'ọjọ́ 22');
- assert.equal(moment([2011, 0, 23]).format('DDDo'), 'ọjọ́ 23', 'ọjọ́ 23');
- assert.equal(moment([2011, 0, 24]).format('DDDo'), 'ọjọ́ 24', 'ọjọ́ 24');
- assert.equal(moment([2011, 0, 25]).format('DDDo'), 'ọjọ́ 25', 'ọjọ́ 25');
- assert.equal(moment([2011, 0, 26]).format('DDDo'), 'ọjọ́ 26', 'ọjọ́ 26');
- assert.equal(moment([2011, 0, 27]).format('DDDo'), 'ọjọ́ 27', 'ọjọ́ 27');
- assert.equal(moment([2011, 0, 28]).format('DDDo'), 'ọjọ́ 28', 'ọjọ́ 28');
- assert.equal(moment([2011, 0, 29]).format('DDDo'), 'ọjọ́ 29', 'ọjọ́ 29');
- assert.equal(moment([2011, 0, 30]).format('DDDo'), 'ọjọ́ 30', 'ọjọ́ 30');
- assert.equal(moment([2011, 0, 31]).format('DDDo'), 'ọjọ́ 31', 'ọjọ́ 31');
- });
- test('format month', function (assert) {
- var expected = 'Sẹ́rẹ́ Sẹ́r_Èrèlè Èrl_Ẹrẹ̀nà Ẹrn_Ìgbé Ìgb_Èbibi Èbi_Òkùdu Òkù_Agẹmo Agẹ_Ògún Ògú_Owewe Owe_Ọ̀wàrà Ọ̀wà_Bélú Bél_Ọ̀pẹ̀̀ Ọ̀pẹ̀̀'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = 'Àìkú Àìk Àì_Ajé Ajé Aj_Ìsẹ́gun Ìsẹ́ Ìs_Ọjọ́rú Ọjr Ọr_Ọjọ́bọ Ọjb Ọb_Ẹtì Ẹtì Ẹt_Àbámẹ́ta Àbá Àb'.split('_'),
- i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ìsẹjú aayá die', '44 seconds = ìsẹjú aayá die');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ìsẹjú kan', '45 seconds = ìsẹjú kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ìsẹjú kan', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'ìsẹjú 2', '90 seconds = ìsẹjú 2');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'ìsẹjú 44', 'ìsẹjú 44 = ìsẹjú 44');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'wákati kan', 'ìsẹjú 45 = wákati kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'wákati kan', 'ìsẹjú 89 = wákati kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'wákati 2', 'ìsẹjú 90 = wákati 2');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'wákati 5', 'wákati 5 = wákati 5');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'wákati 21', 'wákati 21 = wákati 21');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ọjọ́ kan', '22 wákati = ọjọ́ kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ọjọ́ kan', '35 wákati = ọjọ́ kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'ọjọ́ 2', 'wákati 36 = ọjọ́ 2');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ọjọ́ kan', '1 = ọjọ́ kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'ọjọ́ 5', 'ọjọ́ 5 = ọjọ́ 5');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'ọjọ́ 25', 'ọjọ́ 25 = ọjọ́ 25');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'osù kan', 'ọjọ́ 26 = osù kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'osù kan', 'ọjọ́ 30 = osù kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'osù kan', 'ọjọ́ 43 = osù kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'osù 2', 'ọjọ́ 46 = osù 2');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'osù 2', 'ọjọ́ 75 = osù 2');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'osù 3', 'ọjọ́ 76 = osù 3');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'osù kan', 'osù 1 = osù kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'osù 5', 'osù 5 = osù 5');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ọdún kan', 'ọjọ 345 = ọdún kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'ọdún 2', 'ọjọ 548 = ọdún 2');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ọdún kan', 'ọdún 1 = ọdún kan');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'ọdún 5', 'ọdún 5 = ọdún 5');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'ní ìsẹjú aayá die', 'prefix');
- assert.equal(moment(0).from(30000), 'ìsẹjú aayá die kọjá', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), 'ìsẹjú aayá die kọjá', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), 'ní ìsẹjú aayá die', 'ní ìsẹjú aayá die');
- assert.equal(moment().add({d: 5}).fromNow(), 'ní ọjọ́ 5', 'ní ọjọ́ 5');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Ònì ni 12:00 PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Ònì ni 12:25 PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Ònì ni 1:00 PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Ọ̀la ni 12:00 PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Ònì ni 11:00 AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Àna ni 12:00 PM', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tón\'bọ] [ni] LT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tón\'bọ] [ni] LT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tón\'bọ] [ni] LT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 ọjọ́ 52', 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 ọjọ́ 1', 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 ọjọ́ 1', 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 ọjọ́ 2', 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 ọjọ́ 2', 'Jan 15 2012 should be week 2');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('zh-cn');
- test('parse', function (assert) {
- var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'],
- ['ddd, Ah', '周日, 下午3'],
- ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14日 14'],
- ['d do dddd ddd dd', '0 0日 星期日 周日 日'],
- ['DDD DDDo DDDD', '45 45日 045'],
- ['w wo ww', '6 6周 06'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', '下午 下午'],
- ['[这年的第] DDDo', '这年的第 45日'],
- ['LTS', '15:25:50'],
- ['L', '2010年2月14日'],
- ['LL', '2010年2月14日'],
- ['LLL', '2010年2月14日下午3点25分'],
- ['LLLL', '2010年2月14日星期日下午3点25分'],
- ['l', '2010年2月14日'],
- ['ll', '2010年2月14日'],
- ['lll', '2010年2月14日 15:25'],
- ['llll', '2010年2月14日星期日 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '几秒', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分钟', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分钟', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 分钟', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 分钟', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 小时', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小时', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 小时', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 小时', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 小时', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 天', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 天', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 天', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 天', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 天', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 个月', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 个月', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 个月', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 个月', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 个月', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 个月', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 个月', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 个月', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 年', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 年', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 年', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), '几秒内', 'prefix');
- assert.equal(moment(0).from(30000), '几秒前', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), '几秒前', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), '几秒内', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 天内', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), '今天12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), '今天12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), '今天13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), '明天12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), '今天11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn');
- assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning');
- assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon');
- assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon');
- assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52周', 'Jan 1 2012 应该是第52周');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', 'Jan 7 2012 应该是第 1周');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', 'Jan 14 2012 应该是第 2周');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('zh-hk');
- test('parse', function (assert) {
- var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'],
- ['ddd, Ah', '週日, 下午3'],
- ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14日 14'],
- ['d do dddd ddd dd', '0 0日 星期日 週日 日'],
- ['DDD DDDo DDDD', '45 45日 045'],
- ['w wo ww', '8 8週 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', '下午 下午'],
- ['[這年的第] DDDo', '這年的第 45日'],
- ['LTS', '15:25:50'],
- ['L', '2010年2月14日'],
- ['LL', '2010年2月14日'],
- ['LLL', '2010年2月14日 15:25'],
- ['LLLL', '2010年2月14日星期日 15:25'],
- ['l', '2010年2月14日'],
- ['ll', '2010年2月14日'],
- ['lll', '2010年2月14日 15:25'],
- ['llll', '2010年2月14日星期日 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '幾秒', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分鐘', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分鐘', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 分鐘', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 分鐘', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 小時', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小時', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 小時', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 小時', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 小時', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 天', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 天', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 天', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 天', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 天', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 個月', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 個月', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 個月', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 個月', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 個月', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 個月', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 個月', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 個月', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 年', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 年', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 年', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), '幾秒內', 'prefix');
- assert.equal(moment(0).from(30000), '幾秒前', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), '幾秒前', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), '幾秒內', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 天內', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), '今天12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), '今天12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), '今天13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), '明天12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), '今天11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), '凌晨', 'before dawn');
- assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning');
- assert.equal(moment([2011, 2, 23, 9, 0]).format('a'), '上午', 'before noon');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon');
- assert.equal(moment([2011, 2, 23, 13, 0]).format('a'), '下午', 'after noon');
- assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night');
- assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn');
- assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning');
- assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon');
- assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon');
- assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', 'Jan 1 2012 應該是第 1週');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', 'Jan 7 2012 應該是第 1週');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', 'Jan 8 2012 應該是第 2週');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', 'Jan 14 2012 應該是第 2週');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', 'Jan 15 2012 應該是第 3週');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function localeModule (name, lifecycle) {
- QUnit.module('locale:' + name, {
- setup : function () {
- moment.locale(name);
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- moment.locale('en');
- teardownDeprecationHandler(test, moment, 'locale');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- defineCommonLocaleTests(name, -1, -1);
- }
- localeModule('zh-tw');
- test('parse', function (assert) {
- var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i;
- function equalTest(input, mmm, i) {
- assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
- }
- for (i = 0; i < 12; i++) {
- tests[i] = tests[i].split(' ');
- equalTest(tests[i][0], 'MMM', i);
- equalTest(tests[i][1], 'MMM', i);
- equalTest(tests[i][0], 'MMMM', i);
- equalTest(tests[i][1], 'MMMM', i);
- equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
- equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
- equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
- }
- });
- test('format', function (assert) {
- var a = [
- ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'],
- ['ddd, Ah', '週日, 下午3'],
- ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'],
- ['YYYY YY', '2010 10'],
- ['D Do DD', '14 14日 14'],
- ['d do dddd ddd dd', '0 0日 星期日 週日 日'],
- ['DDD DDDo DDDD', '45 45日 045'],
- ['w wo ww', '8 8週 08'],
- ['h hh', '3 03'],
- ['H HH', '15 15'],
- ['m mm', '25 25'],
- ['s ss', '50 50'],
- ['a A', '下午 下午'],
- ['[這年的第] DDDo', '這年的第 45日'],
- ['LTS', '15:25:50'],
- ['L', '2010年2月14日'],
- ['LL', '2010年2月14日'],
- ['LLL', '2010年2月14日 15:25'],
- ['LLLL', '2010年2月14日星期日 15:25'],
- ['l', '2010年2月14日'],
- ['ll', '2010年2月14日'],
- ['lll', '2010年2月14日 15:25'],
- ['llll', '2010年2月14日星期日 15:25']
- ],
- b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
- i;
- for (i = 0; i < a.length; i++) {
- assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('format month', function (assert) {
- var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
- }
- });
- test('format week', function (assert) {
- var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split('_'), i;
- for (i = 0; i < expected.length; i++) {
- assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
- }
- });
- test('from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '幾秒', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分鐘', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分鐘', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 分鐘', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 分鐘', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 小時', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小時', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 小時', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 小時', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 小時', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 天', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 天', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 天', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 天', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 天', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 個月', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 個月', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 個月', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 個月', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 個月', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 個月', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 個月', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 個月', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 年', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 年', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 年', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years');
- });
- test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), '幾秒內', 'prefix');
- assert.equal(moment(0).from(30000), '幾秒前', 'suffix');
- });
- test('now from now', function (assert) {
- assert.equal(moment().fromNow(), '幾秒前', 'now from now should display as in the past');
- });
- test('fromNow', function (assert) {
- assert.equal(moment().add({s: 30}).fromNow(), '幾秒內', 'in a few seconds');
- assert.equal(moment().add({d: 5}).fromNow(), '5 天內', 'in 5 days');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), '今天12:00', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), '今天12:25', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), '今天13:00', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), '明天12:00', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), '今天11:00', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天12:00', 'yesterday at the same time');
- });
- test('calendar next week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().add({d: i});
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days end of day');
- }
- });
- test('calendar last week', function (assert) {
- var i, m;
- for (i = 2; i < 7; i++) {
- m = moment().subtract({d: i});
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days current time');
- m.hours(0).minutes(0).seconds(0).milliseconds(0);
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day');
- m.hours(23).minutes(59).seconds(59).milliseconds(999);
- assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days end of day');
- }
- });
- test('calendar all else', function (assert) {
- var weeksAgo = moment().subtract({w: 1}),
- weeksFromNow = moment().add({w: 1});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');
- weeksAgo = moment().subtract({w: 2});
- weeksFromNow = moment().add({w: 2});
- assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
- assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
- });
- test('meridiem', function (assert) {
- assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), '凌晨', 'before dawn');
- assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning');
- assert.equal(moment([2011, 2, 23, 9, 0]).format('a'), '上午', 'before noon');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon');
- assert.equal(moment([2011, 2, 23, 13, 0]).format('a'), '下午', 'after noon');
- assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night');
- assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn');
- assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning');
- assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon');
- assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon');
- assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon');
- assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night');
- });
- test('weeks year starting sunday format', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', 'Jan 1 2012 應該是第 1週');
- assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', 'Jan 7 2012 應該是第 1週');
- assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', 'Jan 8 2012 應該是第 2週');
- assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', 'Jan 14 2012 應該是第 2週');
- assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', 'Jan 15 2012 應該是第 3週');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('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) {
- 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');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- // These tests are for locale independent features
- // locale dependent tests would be in locale test folder
- module$1('calendar');
- test('passing a function', function (assert) {
- var a = moment().hours(13).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(null, {
- 'sameDay': function () {
- return 'h:mmA';
- }
- }), '1:00PM', 'should equate');
- });
- test('extending calendar options', function (assert) {
- var calendarFormat = moment.calendarFormat;
- moment.calendarFormat = function (myMoment, now) {
- var diff = myMoment.diff(now, 'days', true);
- var nextMonth = now.clone().add(1, 'month');
- var retVal = diff < -6 ? 'sameElse' :
- diff < -1 ? 'lastWeek' :
- diff < 0 ? 'lastDay' :
- diff < 1 ? 'sameDay' :
- diff < 2 ? 'nextDay' :
- diff < 7 ? 'nextWeek' :
- (myMoment.month() === now.month() && myMoment.year() === now.year()) ? 'thisMonth' :
- (nextMonth.month() === myMoment.month() && nextMonth.year() === myMoment.year()) ? 'nextMonth' : 'sameElse';
- return retVal;
- };
- moment.updateLocale('en', {
- calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- thisMonth : '[This month on the] Do',
- nextMonth : '[Next month on the] Do',
- sameElse : 'L'
- }
- });
- var a = moment('2016-01-01').add(28, 'days');
- var b = moment('2016-01-01').add(1, 'month');
- try {
- assert.equal(a.calendar('2016-01-01'), 'This month on the 29th', 'Ad hoc calendar format for this month');
- assert.equal(b.calendar('2016-01-01'), 'Next month on the 1st', 'Ad hoc calendar format for next month');
- assert.equal(a.locale('fr').calendar('2016-01-01'), a.locale('fr').format('L'), 'French falls back to default because thisMonth is not defined in that locale');
- } finally {
- moment.calendarFormat = calendarFormat;
- moment.updateLocale('en', null);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('create');
- test('array', function (assert) {
- assert.ok(moment([2010]).toDate() instanceof Date, '[2010]');
- assert.ok(moment([2010, 1]).toDate() instanceof Date, '[2010, 1]');
- assert.ok(moment([2010, 1, 12]).toDate() instanceof Date, '[2010, 1, 12]');
- assert.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, '[2010, 1, 12, 1]');
- assert.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1]');
- assert.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1]');
- assert.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1, 1]');
- assert.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), 'constructing with array === constructing with new Date()');
- });
- test('array with invalid arguments', function (assert) {
- assert.ok(!moment([2010, null, null]).isValid(), '[2010, null, null]');
- assert.ok(!moment([1945, null, null]).isValid(), '[1945, null, null] (pre-1970)');
- });
- test('array copying', function (assert) {
- var importantArray = [2009, 11];
- moment(importantArray);
- assert.deepEqual(importantArray, [2009, 11], 'initializer should not mutate the original array');
- });
- test('object', function (assert) {
- var fmt = 'YYYY-MM-DD HH:mm:ss.SSS',
- tests = [
- [{year: 2010}, '2010-01-01 00:00:00.000'],
- [{year: 2010, month: 1}, '2010-02-01 00:00:00.000'],
- [{year: 2010, month: 1, day: 12}, '2010-02-12 00:00:00.000'],
- [{year: 2010, month: 1, date: 12}, '2010-02-12 00:00:00.000'],
- [{year: 2010, month: 1, day: 12, hours: 1}, '2010-02-12 01:00:00.000'],
- [{year: 2010, month: 1, date: 12, hours: 1}, '2010-02-12 01:00:00.000'],
- [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'],
- [{year: 2010, month: 1, date: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'],
- [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}, '2010-02-12 01:01:01.000'],
- [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}, '2010-02-12 01:01:01.001'],
- [{years: 2010, months: 1, days: 14, hours: 15, minutes: 25, seconds: 50, milliseconds: 125}, '2010-02-14 15:25:50.125'],
- [{year: 2010, month: 1, day: 14, hour: 15, minute: 25, second: 50, millisecond: 125}, '2010-02-14 15:25:50.125'],
- [{y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125}, '2010-02-14 15:25:50.125']
- ], i;
- for (i = 0; i < tests.length; ++i) {
- assert.equal(moment(tests[i][0]).format(fmt), tests[i][1]);
- }
- });
- test('multi format array copying', function (assert) {
- var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'];
- moment('1999-02-13', importantArray);
- assert.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], 'initializer should not mutate the original array');
- });
- test('number', function (assert) {
- assert.ok(moment(1000).toDate() instanceof Date, '1000');
- assert.equal(moment(1000).valueOf(), 1000, 'asserting valueOf');
- assert.equal(moment.utc(1000).valueOf(), 1000, 'asserting valueOf');
- });
- test('unix', function (assert) {
- assert.equal(moment.unix(1).valueOf(), 1000, '1 unix timestamp == 1000 Date.valueOf');
- assert.equal(moment(1000).unix(), 1, '1000 Date.valueOf == 1 unix timestamp');
- assert.equal(moment.unix(1000).valueOf(), 1000000, '1000 unix timestamp == 1000000 Date.valueOf');
- assert.equal(moment(1500).unix(), 1, '1500 Date.valueOf == 1 unix timestamp');
- assert.equal(moment(1900).unix(), 1, '1900 Date.valueOf == 1 unix timestamp');
- assert.equal(moment(2100).unix(), 2, '2100 Date.valueOf == 2 unix timestamp');
- assert.equal(moment(1333129333524).unix(), 1333129333, '1333129333524 Date.valueOf == 1333129333 unix timestamp');
- assert.equal(moment(1333129333524000).unix(), 1333129333524, '1333129333524000 Date.valueOf == 1333129333524 unix timestamp');
- });
- test('date', function (assert) {
- assert.ok(moment(new Date()).toDate() instanceof Date, 'new Date()');
- assert.equal(moment(new Date(2016,0,1), 'YYYY-MM-DD').format('YYYY-MM-DD'), '2016-01-01', 'If date is provided, format string is ignored');
- });
- test('date with a format as an array', function (assert) {
- var tests = [
- new Date(2016, 9, 27),
- new Date(2016, 9, 28),
- new Date(2016, 9, 29),
- new Date(2016, 9, 30),
- new Date(2016, 9, 31)
- ], i;
- for (i = 0; i < tests.length; i++) {
- assert.equal(moment(tests[i]).format(), moment(tests[i], ['MM/DD/YYYY'], false).format(), 'Passing date with a format array should still return the correct date');
- }
- });
- test('date mutation', function (assert) {
- var a = new Date();
- assert.ok(moment(a).toDate() !== a, 'the date moment uses should not be the date passed in');
- });
- test('moment', function (assert) {
- assert.ok(moment(moment()).toDate() instanceof Date, 'moment(moment())');
- assert.ok(moment(moment(moment())).toDate() instanceof Date, 'moment(moment(moment()))');
- });
- test('cloning moment should only copy own properties', function (assert) {
- assert.ok(!moment().clone().hasOwnProperty('month'), 'Should not clone prototype methods');
- });
- test('cloning moment works with weird clones', function (assert) {
- var extend = function (a, b) {
- var i;
- for (i in b) {
- a[i] = b[i];
- }
- return a;
- },
- now = moment(),
- nowu = moment.utc();
- assert.equal(+extend({}, now).clone(), +now, 'cloning extend-ed now is now');
- assert.equal(+extend({}, nowu).clone(), +nowu, 'cloning extend-ed utc now is utc now');
- });
- test('cloning respects moment.momentProperties', function (assert) {
- var m = moment();
- assert.equal(m.clone()._special, undefined, 'cloning ignores extra properties');
- m._special = 'bacon';
- moment.momentProperties.push('_special');
- assert.equal(m.clone()._special, 'bacon', 'cloning respects momentProperties');
- moment.momentProperties.pop();
- });
- test('undefined', function (assert) {
- assert.ok(moment().toDate() instanceof Date, 'undefined');
- });
- test('iso with bad input', function (assert) {
- assert.ok(!moment('a', moment.ISO_8601).isValid(), 'iso parsing with invalid string');
- assert.ok(!moment('a', moment.ISO_8601, true).isValid(), 'iso parsing with invalid string, strict');
- });
- test('iso format 24hrs', function (assert) {
- assert.equal(moment('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'),
- '2014-01-02T00:00:00.000', 'iso format with 24:00 localtime');
- assert.equal(moment.utc('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'),
- '2014-01-02T00:00:00.000', 'iso format with 24:00 utc');
- });
- test('string without format - json', function (assert) {
- assert.equal(moment('Date(1325132654000)').valueOf(), 1325132654000, 'Date(1325132654000)');
- assert.equal(moment('Date(-1325132654000)').valueOf(), -1325132654000, 'Date(-1325132654000)');
- assert.equal(moment('/Date(1325132654000)/').valueOf(), 1325132654000, '/Date(1325132654000)/');
- assert.equal(moment('/Date(1325132654000+0700)/').valueOf(), 1325132654000, '/Date(1325132654000+0700)/');
- assert.equal(moment('/Date(1325132654000-0700)/').valueOf(), 1325132654000, '/Date(1325132654000-0700)/');
- });
- test('string with format dropped am/pm bug', function (assert) {
- moment.locale('en');
- assert.equal(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens');
- assert.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens');
- assert.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens');
- assert.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid());
- assert.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid());
- assert.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid());
- });
- test('empty string with formats', function (assert) {
- assert.equal(moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.equal(moment(' ', ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.ok(!moment('', 'MM').isValid());
- assert.ok(!moment(' ', 'MM').isValid());
- assert.ok(!moment(' ', 'DD').isValid());
- assert.ok(!moment(' ', ['MM', 'DD']).isValid());
- });
- test('undefined argument with formats', function (assert) {
- assert.equal(moment(undefined, 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.equal(moment(undefined, 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.equal(moment(undefined, ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date');
- assert.ok(!moment(undefined, 'MM').isValid());
- assert.ok(!moment(undefined, 'MM').isValid());
- assert.ok(!moment(undefined, 'DD').isValid());
- assert.ok(!moment(undefined, ['MM', 'DD']).isValid());
- });
- test('defaulting to current date', function (assert) {
- var now = moment();
- assert.equal(moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'),
- now.clone().hour(12).minute(13).second(14).format('YYYY-MM-DD hh:mm:ss'),
- 'given only time default to current date');
- assert.equal(moment('05', 'DD').format('YYYY-MM-DD'),
- now.clone().date(5).format('YYYY-MM-DD'),
- 'given day of month default to current month, year');
- assert.equal(moment('05', 'MM').format('YYYY-MM-DD'),
- now.clone().month(4).date(1).format('YYYY-MM-DD'),
- 'given month default to current year');
- assert.equal(moment('1996', 'YYYY').format('YYYY-MM-DD'),
- now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'),
- 'given year do not default');
- });
- test('matching am/pm', function (assert) {
- assert.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM');
- assert.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.');
- assert.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P');
- assert.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm');
- assert.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.');
- assert.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p');
- assert.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM');
- assert.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.');
- assert.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A');
- assert.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am');
- assert.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.');
- assert.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a');
- assert.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names');
- });
- test('string with format', function (assert) {
- moment.locale('en');
- var a = [
- ['YYYY-Q', '2014-4'],
- ['MM-DD-YYYY', '12-02-1999'],
- ['DD-MM-YYYY', '12-02-1999'],
- ['DD/MM/YYYY', '12/02/1999'],
- ['DD_MM_YYYY', '12_02_1999'],
- ['DD:MM:YYYY', '12:02:1999'],
- ['D-M-YY', '2-2-99'],
- ['YY', '99'],
- ['DDD-YYYY', '300-1999'],
- ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'],
- ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'],
- ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'],
- ['h:mm a', '12:00 pm'],
- ['h:mm a', '12:30 pm'],
- ['h:mm a', '12:00 am'],
- ['h:mm a', '12:30 am'],
- ['HH:mm', '12:00'],
- ['kk:mm', '12:00'],
- ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'],
- ['MM-DD-YYYY [M]', '12-02-1999 M'],
- ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'],
- ['HH:mm:ss', '12:00:00'],
- ['HH:mm:ss', '12:30:00'],
- ['HH:mm:ss', '00:00:00'],
- ['HH:mm:ss S', '00:30:00 1'],
- ['HH:mm:ss SS', '00:30:00 12'],
- ['HH:mm:ss SSS', '00:30:00 123'],
- ['HH:mm:ss S', '00:30:00 7'],
- ['HH:mm:ss SS', '00:30:00 78'],
- ['HH:mm:ss SSS', '00:30:00 789'],
- ['kk:mm:ss', '12:00:00'],
- ['kk:mm:ss', '12:30:00'],
- ['kk:mm:ss', '24:00:00'],
- ['kk:mm:ss S', '24:30:00 1'],
- ['kk:mm:ss SS', '24:30:00 12'],
- ['kk:mm:ss SSS', '24:30:00 123'],
- ['kk:mm:ss S', '24:30:00 7'],
- ['kk:mm:ss SS', '24:30:00 78'],
- ['kk:mm:ss SSS', '24:30:00 789'],
- ['X', '1234567890'],
- ['x', '1234567890123'],
- ['LT', '12:30 AM'],
- ['LTS', '12:30:29 AM'],
- ['L', '09/02/1999'],
- ['l', '9/2/1999'],
- ['LL', 'September 2, 1999'],
- ['ll', 'Sep 2, 1999'],
- ['LLL', 'September 2, 1999 12:30 AM'],
- ['lll', 'Sep 2, 1999 12:30 AM'],
- ['LLLL', 'Thursday, September 2, 1999 12:30 AM'],
- ['llll', 'Thu, Sep 2, 1999 12:30 AM']
- ],
- m,
- i;
- for (i = 0; i < a.length; i++) {
- m = moment(a[i][1], a[i][0]);
- assert.ok(m.isValid());
- assert.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('2 digit year with YYYY format', function (assert) {
- assert.equal(moment('9/2/99', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/99');
- assert.equal(moment('9/2/1999', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/1999');
- assert.equal(moment('9/2/68', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/2068', 'D/M/YYYY ---> 9/2/68');
- assert.equal(moment('9/2/69', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1969', 'D/M/YYYY ---> 9/2/69');
- });
- test('unix timestamp format', function (assert) {
- var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], i, format;
- for (i = 0; i < formats.length; i++) {
- format = formats[i];
- assert.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + ' matches timestamp without milliseconds');
- assert.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + ' matches timestamp with deciseconds');
- assert.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + ' matches timestamp with centiseconds');
- assert.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + ' matches timestamp with milliseconds');
- }
- });
- test('unix offset milliseconds', function (assert) {
- assert.equal(moment('1234567890123', 'x').valueOf(), 1234567890123, 'x matches unix offset in milliseconds');
- });
- test('milliseconds format', function (assert) {
- assert.equal(moment('1', 'S').get('ms'), 100, 'deciseconds');
- // assert.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits');
- // assert.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits');
- assert.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds');
- // assert.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits');
- assert.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds');
- assert.equal(moment('1234', 'SSSS').get('ms'), 123, 'milliseconds with SSSS');
- assert.equal(moment('123456789101112', 'SSSS').get('ms'), 123, 'milliseconds with SSSS');
- });
- test('string with format no separators', function (assert) {
- moment.locale('en');
- var a = [
- ['MMDDYYYY', '12021999'],
- ['DDMMYYYY', '12021999'],
- ['YYYYMMDD', '19991202'],
- ['DDMMMYYYY', '10Sep2001']
- ], i;
- for (i = 0; i < a.length; i++) {
- assert.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
- }
- });
- test('string with format (timezone)', function (assert) {
- assert.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours \'5 -0700\' ---> \'H ZZ\'');
- assert.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours \'5 -07:00\' ---> \'H Z\'');
- assert.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 -0730\' ---> \'H ZZ\'');
- assert.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 -07:0\' ---> \'H Z\'');
- assert.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours \'5 +0100\' ---> \'H ZZ\'');
- assert.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours \'5 +01:00\' ---> \'H Z\'');
- assert.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 +0130\' ---> \'H ZZ\'');
- assert.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 +01:30\' ---> \'H Z\'');
- });
- test('string with format (timezone offset)', function (assert) {
- var a, b, c, d, e, f;
- a = new Date(Date.UTC(2011, 0, 1, 1));
- b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z');
- assert.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset');
- assert.equal(+a, +b, 'date created with utc == parsed string with timezone offset');
- c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z');
- d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z');
- assert.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time');
- e = moment.utc('Fri, 20 Jul 2012 17:15:00', 'ddd, DD MMM YYYY HH:mm:ss');
- f = moment.utc('Fri, 20 Jul 2012 10:15:00 -0700', 'ddd, DD MMM YYYY HH:mm:ss ZZ');
- assert.equal(e.hours(), f.hours(), 'parse timezone offset in utc');
- });
- test('string with timezone around start of year', function (assert) {
- assert.equal(moment('2000-01-01T00:00:00.000+01:00').toISOString(), '1999-12-31T23:00:00.000Z', '+1:00 around 2000');
- assert.equal(moment('2000-01-01T00:00:00.000-01:00').toISOString(), '2000-01-01T01:00:00.000Z', '-1:00 around 2000');
- assert.equal(moment('1970-01-01T00:00:00.000+01:00').toISOString(), '1969-12-31T23:00:00.000Z', '+1:00 around 1970');
- assert.equal(moment('1970-01-01T00:00:00.000-01:00').toISOString(), '1970-01-01T01:00:00.000Z', '-1:00 around 1970');
- assert.equal(moment('1200-01-01T00:00:00.000+01:00').toISOString(), '1199-12-31T23:00:00.000Z', '+1:00 around 1200');
- assert.equal(moment('1200-01-01T00:00:00.000-01:00').toISOString(), '1200-01-01T01:00:00.000Z', '-1:00 around 1200');
- });
- test('string with array of formats', function (assert) {
- var thursdayForCurrentWeek = moment()
- .day(4)
- .format('YYYY MM DD');
- assert.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day');
- assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last');
- assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first');
- assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year last');
- assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year first');
- assert.equal(moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last');
- assert.equal(moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first');
- assert.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month');
- assert.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month');
- assert.equal(moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, month first format');
- assert.equal(moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, day first format');
- assert.equal(moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'all unparsed substrings have influence on format penalty');
- assert.equal(moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), '02 10 2011', 'prefer formats without extra tokens');
- assert.equal(moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD [junk]']).format('MM DD YYYY'), '02 10 2011', 'prefer formats that dont result in extra characters');
- assert.equal(moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), '10 22 2011', 'prefer valid results');
- assert.equal(moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), 'Invalid date', 'doest throw for invalid strings');
- assert.equal(moment('gibberish', []).format('MM DD YYYY'), 'Invalid date', 'doest throw for an empty array');
- // https://github.com/moment/moment/issues/1143
- assert.equal(moment(
- 'System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)',
- ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ssZ'])
- .format('YYYY-MM-DD'), '2011-07-01', 'Works for long strings');
- assert.equal(moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'escape RegExp special characters on comparing');
- assert.equal(moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year');
- assert.equal(moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year');
- assert.equal(moment('01', ['MM', 'DD'])._f, 'MM', 'Should use first valid format');
- assert.equal(moment('Thursday 8:30pm', ['dddd h:mma']).format('YYYY MM DD dddd h:mma'), thursdayForCurrentWeek + ' Thursday 8:30pm', 'Default to current week');
- });
- test('string with array of formats + ISO', function (assert) {
- assert.equal(moment('1994', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).year(), 1994, 'iso: assert parse YYYY');
- assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).hour(), 17, 'iso: assert parse HH:mm (1)');
- assert.equal(moment('24:15', [moment.ISO_8601, 'MM', 'kk:mm', 'YYYY']).hour(), 0, 'iso: assert parse kk:mm');
- assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).minutes(), 15, 'iso: assert parse HH:mm (2)');
- assert.equal(moment('06', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).month(), 6 - 1, 'iso: assert parse MM');
- assert.equal(moment('2012-06-01', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).parsingFlags().iso, true, 'iso: assert parse iso');
- assert.equal(moment('2014-05-05', [moment.ISO_8601, 'YYYY-MM-DD']).parsingFlags().iso, true, 'iso: edge case array precedence iso');
- assert.equal(moment('2014-05-05', ['YYYY-MM-DD', moment.ISO_8601]).parsingFlags().iso, false, 'iso: edge case array precedence not iso');
- });
- test('string with format - years', function (assert) {
- assert.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067');
- assert.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068');
- assert.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969');
- assert.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970');
- });
- test('implicit cloning', function (assert) {
- var momentA = moment([2011, 10, 10]),
- momentB = moment(momentA);
- momentA.month(5);
- assert.equal(momentB.month(), 10, 'Calling moment() on a moment will create a clone');
- assert.equal(momentA.month(), 5, 'Calling moment() on a moment will create a clone');
- });
- test('explicit cloning', function (assert) {
- var momentA = moment([2011, 10, 10]),
- momentB = momentA.clone();
- momentA.month(5);
- assert.equal(momentB.month(), 10, 'Calling moment() on a moment will create a clone');
- assert.equal(momentA.month(), 5, 'Calling moment() on a moment will create a clone');
- });
- test('cloning carrying over utc mode', function (assert) {
- assert.equal(moment().local().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false');
- assert.equal(moment().utc().clone()._isUTC, true, 'An cloned utc moment should have _isUTC == true');
- assert.equal(moment().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false');
- assert.equal(moment.utc().clone()._isUTC, true, 'An explicit cloned utc moment should have _isUTC == true');
- assert.equal(moment(moment().local())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false');
- assert.equal(moment(moment().utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true');
- assert.equal(moment(moment())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false');
- assert.equal(moment(moment.utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true');
- });
- test('parsing RFC 2822', function (assert) {
- var testCases = {
- 'clean RFC2822 datetime with all options': 'Tue, 01 Nov 2016 01:23:45 UT',
- 'clean RFC2822 datetime without comma': 'Tue 01 Nov 2016 02:23:45 GMT',
- 'clean RFC2822 datetime without seconds': 'Tue, 01 Nov 2016 03:23 +0000',
- 'clean RFC2822 datetime without century': 'Tue, 01 Nov 16 04:23:45 Z',
- 'clean RFC2822 datetime without day': '01 Nov 2016 05:23:45 z',
- 'clean RFC2822 datetime with single-digit day-of-month': 'Tue, 1 Nov 2016 06:23:45 GMT',
- 'RFC2822 datetime with CFWSs': '(Init Comment) Tue,\n 1 Nov 2016 (Split\n Comment) 07:23:45 +0000 (GMT)'
- };
- var testCase;
- for (testCase in testCases) {
- var testResult = moment(testCases[testCase], moment.RFC_2822, true);
- assert.ok(testResult.isValid(), testResult);
- assert.ok(testResult.parsingFlags().rfc2822, testResult + ' - rfc2822 parsingFlag');
- }
- });
- test('non RFC 2822 strings', function (assert) {
- var testCases = {
- 'RFC2822 datetime with all options but invalid day delimiter': 'Tue. 01 Nov 2016 01:23:45 GMT',
- 'RFC2822 datetime with mismatching Day (week v date)': 'Mon, 01 Nov 2016 01:23:45 GMT'
- };
- var testCase;
- for (testCase in testCases) {
- var testResult = moment(testCases[testCase], moment.RFC_2822, true);
- assert.ok(!testResult.isValid(), testResult);
- assert.ok(!testResult.parsingFlags().rfc2822, testResult + ' - rfc2822 parsingFlag');
- }
- });
- test('parsing iso', function (assert) {
- var offset = moment([2011, 9, 8]).utcOffset(),
- pad = function (input) {
- if (input < 10) {
- return '0' + input;
- }
- return '' + input;
- },
- hourOffset = (offset > 0 ? Math.floor(offset / 60) : Math.ceil(offset / 60)),
- minOffset = offset - (hourOffset * 60),
- tz = (offset >= 0) ?
- '+' + pad(hourOffset) + ':' + pad(minOffset) :
- '-' + pad(-hourOffset) + ':' + pad(-minOffset),
- tz2 = tz.replace(':', ''),
- tz3 = tz2.slice(0, 3),
- //Tz3 removes minutes digit so will break the tests when parsed if they all use the same minutes digit
- minutesForTz3 = pad((4 + minOffset) % 60),
- minute = pad(4 + minOffset),
- formats = [
- ['2011-10-08', '2011-10-08T00:00:00.000' + tz],
- ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz],
- ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz],
- ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz],
- ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011-10-08T18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011-10-08T18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz],
- ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz],
- ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz],
- ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011-10-08 18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011-10-08 18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011-W40', '2011-10-03T00:00:00.000' + tz],
- ['2011-W40-6', '2011-10-08T00:00:00.000' + tz],
- ['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz],
- ['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz],
- ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz],
- ['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011-W40-6T18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011-W40-6T18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz],
- ['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz],
- ['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz],
- ['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011-W40-6 18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011-W40-6 18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011-281', '2011-10-08T00:00:00.000' + tz],
- ['2011-281T18', '2011-10-08T18:00:00.000' + tz],
- ['2011-281T18:04', '2011-10-08T18:04:00.000' + tz],
- ['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz],
- ['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011-281T18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011-281T18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011-281 18', '2011-10-08T18:00:00.000' + tz],
- ['2011-281 18:04', '2011-10-08T18:04:00.000' + tz],
- ['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz],
- ['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011-281 18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011-281 18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['20111008T18', '2011-10-08T18:00:00.000' + tz],
- ['20111008T1804', '2011-10-08T18:04:00.000' + tz],
- ['20111008T180420', '2011-10-08T18:04:20.000' + tz],
- ['20111008T1804' + tz, '2011-10-08T18:04:00.000' + tz],
- ['20111008T180420' + tz, '2011-10-08T18:04:20.000' + tz],
- ['20111008T1804' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['20111008T180420' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['20111008T1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['20111008T180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['20111008T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['20111008T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['20111008T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['20111008 18', '2011-10-08T18:00:00.000' + tz],
- ['20111008 1804', '2011-10-08T18:04:00.000' + tz],
- ['20111008 180420', '2011-10-08T18:04:20.000' + tz],
- ['20111008 1804' + tz, '2011-10-08T18:04:00.000' + tz],
- ['20111008 180420' + tz, '2011-10-08T18:04:20.000' + tz],
- ['20111008 1804' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['20111008 180420' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['20111008 1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['20111008 180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['20111008 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['20111008 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['20111008 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011W40', '2011-10-03T00:00:00.000' + tz],
- ['2011W406', '2011-10-08T00:00:00.000' + tz],
- ['2011W406T18', '2011-10-08T18:00:00.000' + tz],
- ['2011W406T1804', '2011-10-08T18:04:00.000' + tz],
- ['2011W406T180420', '2011-10-08T18:04:20.000' + tz],
- ['2011W406 1804' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011W406T1804' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011W406T180420' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011W406T1804' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011W406T180420' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011W406T1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011W406T180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011W406T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011W406T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011W406T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011W406 18', '2011-10-08T18:00:00.000' + tz],
- ['2011W406 1804', '2011-10-08T18:04:00.000' + tz],
- ['2011W406 180420', '2011-10-08T18:04:20.000' + tz],
- ['2011W406 1804' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011W406 180420' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011W406 180420' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011W406 1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011W406 180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011W406 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011W406 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011W406 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011281', '2011-10-08T00:00:00.000' + tz],
- ['2011281T18', '2011-10-08T18:00:00.000' + tz],
- ['2011281T1804', '2011-10-08T18:04:00.000' + tz],
- ['2011281T180420', '2011-10-08T18:04:20.000' + tz],
- ['2011281T1804' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011281T180420' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011281T1804' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011281T180420' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011281T1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011281T180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011281T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011281T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011281T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz],
- ['2011281 18', '2011-10-08T18:00:00.000' + tz],
- ['2011281 1804', '2011-10-08T18:04:00.000' + tz],
- ['2011281 180420', '2011-10-08T18:04:20.000' + tz],
- ['2011281 1804' + tz, '2011-10-08T18:04:00.000' + tz],
- ['2011281 180420' + tz, '2011-10-08T18:04:20.000' + tz],
- ['2011281 1804' + tz2, '2011-10-08T18:04:00.000' + tz],
- ['2011281 180420' + tz2, '2011-10-08T18:04:20.000' + tz],
- ['2011281 1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz],
- ['2011281 180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz],
- ['2011281 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz],
- ['2011281 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz],
- ['2011281 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz]
- ], i;
- for (i = 0; i < formats.length; i++) {
- assert.equal(moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
- formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]);
- assert.equal(moment(formats[i][0], moment.ISO_8601).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
- formats[i][1], 'moment should be able to parse specified ISO ' + formats[i][0]);
- assert.equal(moment(formats[i][0], moment.ISO_8601, true).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),
- formats[i][1], 'moment should be able to parse specified strict ISO ' + formats[i][0]);
- }
- });
- test('non iso 8601 strings', function (assert) {
- assert.ok(!moment('2015-10T10:15', moment.ISO_8601, true).isValid(), 'incomplete date with time');
- assert.ok(!moment('2015-W10T10:15', moment.ISO_8601, true).isValid(), 'incomplete week date with time');
- assert.ok(!moment('201510', moment.ISO_8601, true).isValid(), 'basic YYYYMM is not allowed');
- assert.ok(!moment('2015W10T1015', moment.ISO_8601, true).isValid(), 'incomplete week date with time (basic)');
- assert.ok(!moment('2015-10-08T1015', moment.ISO_8601, true).isValid(), 'mixing extended and basic format');
- assert.ok(!moment('20151008T10:15', moment.ISO_8601, true).isValid(), 'mixing basic and extended format');
- assert.ok(!moment('2015-10-1', moment.ISO_8601, true).isValid(), 'missing zero padding for day');
- });
- test('parsing iso week year/week/weekday', function (assert) {
- assert.equal(moment.utc('2007-W01').format(), '2007-01-01T00:00:00Z', '2008 week 1 (1st Jan Mon)');
- assert.equal(moment.utc('2008-W01').format(), '2007-12-31T00:00:00Z', '2008 week 1 (1st Jan Tue)');
- assert.equal(moment.utc('2003-W01').format(), '2002-12-30T00:00:00Z', '2008 week 1 (1st Jan Wed)');
- assert.equal(moment.utc('2009-W01').format(), '2008-12-29T00:00:00Z', '2009 week 1 (1st Jan Thu)');
- assert.equal(moment.utc('2010-W01').format(), '2010-01-04T00:00:00Z', '2010 week 1 (1st Jan Fri)');
- assert.equal(moment.utc('2011-W01').format(), '2011-01-03T00:00:00Z', '2011 week 1 (1st Jan Sat)');
- assert.equal(moment.utc('2012-W01').format(), '2012-01-02T00:00:00Z', '2012 week 1 (1st Jan Sun)');
- });
- test('parsing week year/week/weekday (dow 1, doy 4)', function (assert) {
- moment.locale('dow:1,doy:4', {week: {dow: 1, doy: 4}});
- assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00Z', '2007 week 1 (1st Jan Mon)');
- assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00Z', '2008 week 1 (1st Jan Tue)');
- assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00Z', '2003 week 1 (1st Jan Wed)');
- assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00Z', '2009 week 1 (1st Jan Thu)');
- assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2010-01-04T00:00:00Z', '2010 week 1 (1st Jan Fri)');
- assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-03T00:00:00Z', '2011 week 1 (1st Jan Sat)');
- assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-02T00:00:00Z', '2012 week 1 (1st Jan Sun)');
- moment.defineLocale('dow:1,doy:4', null);
- });
- test('parsing week year/week/weekday (dow 1, doy 7)', function (assert) {
- moment.locale('dow:1,doy:7', {week: {dow: 1, doy: 7}});
- assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00Z', '2007 week 1 (1st Jan Mon)');
- assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00Z', '2008 week 1 (1st Jan Tue)');
- assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00Z', '2003 week 1 (1st Jan Wed)');
- assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00Z', '2009 week 1 (1st Jan Thu)');
- assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-28T00:00:00Z', '2010 week 1 (1st Jan Fri)');
- assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-27T00:00:00Z', '2011 week 1 (1st Jan Sat)');
- assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-26T00:00:00Z', '2012 week 1 (1st Jan Sun)');
- moment.defineLocale('dow:1,doy:7', null);
- });
- test('parsing week year/week/weekday (dow 0, doy 6)', function (assert) {
- moment.locale('dow:0,doy:6', {week: {dow: 0, doy: 6}});
- assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-31T00:00:00Z', '2007 week 1 (1st Jan Mon)');
- assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-30T00:00:00Z', '2008 week 1 (1st Jan Tue)');
- assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-29T00:00:00Z', '2003 week 1 (1st Jan Wed)');
- assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-28T00:00:00Z', '2009 week 1 (1st Jan Thu)');
- assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-27T00:00:00Z', '2010 week 1 (1st Jan Fri)');
- assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-26T00:00:00Z', '2011 week 1 (1st Jan Sat)');
- assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-01T00:00:00Z', '2012 week 1 (1st Jan Sun)');
- moment.defineLocale('dow:0,doy:6', null);
- });
- test('parsing week year/week/weekday (dow 6, doy 12)', function (assert) {
- moment.locale('dow:6,doy:12', {week: {dow: 6, doy: 12}});
- assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-30T00:00:00Z', '2007 week 1 (1st Jan Mon)');
- assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-29T00:00:00Z', '2008 week 1 (1st Jan Tue)');
- assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-28T00:00:00Z', '2003 week 1 (1st Jan Wed)');
- assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-27T00:00:00Z', '2009 week 1 (1st Jan Thu)');
- assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-26T00:00:00Z', '2010 week 1 (1st Jan Fri)');
- assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-01T00:00:00Z', '2011 week 1 (1st Jan Sat)');
- assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-31T00:00:00Z', '2012 week 1 (1st Jan Sun)');
- moment.defineLocale('dow:6,doy:12', null);
- });
- test('parsing ISO with Z', function (assert) {
- var i, mom, formats = [
- ['2011-10-08T18:04', '2011-10-08T18:04:00.000'],
- ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'],
- ['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'],
- ['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'],
- ['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'],
- ['2011-W40-6T18', '2011-10-08T18:00:00.000'],
- ['2011-W40-6T18:04', '2011-10-08T18:04:00.000'],
- ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'],
- ['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'],
- ['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'],
- ['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'],
- ['2011-281T18', '2011-10-08T18:00:00.000'],
- ['2011-281T18:04', '2011-10-08T18:04:00.000'],
- ['2011-281T18:04:20', '2011-10-08T18:04:20.000'],
- ['2011-281T18:04:20', '2011-10-08T18:04:20.000'],
- ['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'],
- ['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'],
- ['2011-281T18:04:20.111', '2011-10-08T18:04:20.111']
- ];
- for (i = 0; i < formats.length; i++) {
- mom = moment(formats[i][0] + 'Z').utc();
- assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + 'Z');
- mom = moment(formats[i][0] + ' Z').utc();
- assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + ' Z');
- }
- });
- test('parsing iso with T', function (assert) {
- assert.equal(moment('2011-10-08T18')._f, 'YYYY-MM-DDTHH', 'should include \'T\' in the format');
- assert.equal(moment('2011-10-08T18:20')._f, 'YYYY-MM-DDTHH:mm', 'should include \'T\' in the format');
- assert.equal(moment('2011-10-08T18:20:13')._f, 'YYYY-MM-DDTHH:mm:ss', 'should include \'T\' in the format');
- assert.equal(moment('2011-10-08T18:20:13.321')._f, 'YYYY-MM-DDTHH:mm:ss.SSSS', 'should include \'T\' in the format');
- assert.equal(moment('2011-10-08 18')._f, 'YYYY-MM-DD HH', 'should not include \'T\' in the format');
- assert.equal(moment('2011-10-08 18:20')._f, 'YYYY-MM-DD HH:mm', 'should not include \'T\' in the format');
- assert.equal(moment('2011-10-08 18:20:13')._f, 'YYYY-MM-DD HH:mm:ss', 'should not include \'T\' in the format');
- assert.equal(moment('2011-10-08 18:20:13.321')._f, 'YYYY-MM-DD HH:mm:ss.SSSS', 'should not include \'T\' in the format');
- });
- test('parsing iso Z timezone', function (assert) {
- var i,
- formats = [
- ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'],
- ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'],
- ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00']
- ];
- for (i = 0; i < formats.length; i++) {
- assert.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]);
- }
- });
- test('parsing iso Z timezone into local', function (assert) {
- var m = moment('2011-10-08T18:04:20.111Z');
- assert.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', 'moment should be able to parse ISO 2011-10-08T18:04:20.111Z');
- });
- test('parsing iso with more subsecond precision digits', function (assert) {
- assert.equal(moment.utc('2013-07-31T22:00:00.0000000Z').format(), '2013-07-31T22:00:00Z', 'more than 3 subsecond digits');
- });
- test('null or empty', function (assert) {
- assert.equal(moment('').isValid(), false, 'moment(\'\') is not valid');
- assert.equal(moment(null).isValid(), false, 'moment(null) is not valid');
- assert.equal(moment(null, 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid');
- assert.equal(moment('', 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid');
- assert.equal(moment.utc('').isValid(), false, 'moment.utc(\'\') is not valid');
- assert.equal(moment.utc(null).isValid(), false, 'moment.utc(null) is not valid');
- assert.equal(moment.utc(null, 'YYYY-MM-DD').isValid(), false, 'moment.utc(null) is not valid');
- assert.equal(moment.utc('', 'YYYY-MM-DD').isValid(), false, 'moment.utc(\'\', \'YYYY-MM-DD\') is not valid');
- });
- test('first century', function (assert) {
- assert.equal(moment([0, 0, 1]).format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0');
- assert.equal(moment([99, 0, 1]).format('YYYY-MM-DD'), '0099-01-01', 'Year AD 99');
- assert.equal(moment([999, 0, 1]).format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999');
- assert.equal(moment('0 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0');
- assert.equal(moment('999 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999');
- assert.equal(moment('0 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00000-01-01', 'Year AD 0');
- assert.equal(moment('99 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00099-01-01', 'Year AD 99');
- assert.equal(moment('999 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00999-01-01', 'Year AD 999');
- });
- test('six digit years', function (assert) {
- assert.equal(moment([-270000, 0, 1]).format('YYYYY-MM-DD'), '-270000-01-01', 'format BC 270,001');
- assert.equal(moment([270000, 0, 1]).format('YYYYY-MM-DD'), '270000-01-01', 'format AD 270,000');
- assert.equal(moment('-270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -270000, 'parse BC 270,001');
- assert.equal(moment('270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD 270,000');
- assert.equal(moment('+270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD +270,000');
- assert.equal(moment.utc('-270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -270000, 'parse utc BC 270,001');
- assert.equal(moment.utc('270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD 270,000');
- assert.equal(moment.utc('+270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD +270,000');
- });
- test('negative four digit years', function (assert) {
- assert.equal(moment('-1000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -1000, 'parse BC 1,001');
- assert.equal(moment.utc('-1000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -1000, 'parse utc BC 1,001');
- });
- test('strict parsing', function (assert) {
- assert.equal(moment('2014-', 'YYYY-Q', true).isValid(), false, 'fail missing quarter');
- assert.equal(moment('2012-05', 'YYYY-MM', true).format('YYYY-MM'), '2012-05', 'parse correct string');
- assert.equal(moment(' 2012-05', 'YYYY-MM', true).isValid(), false, 'fail on extra whitespace');
- assert.equal(moment('foo 2012-05', '[foo] YYYY-MM', true).format('YYYY-MM'), '2012-05', 'handle fixed text');
- assert.equal(moment('2012 05', 'YYYY-MM', true).isValid(), false, 'fail on different separator');
- assert.equal(moment('2012 05', 'YYYY MM DD', true).isValid(), false, 'fail on too many tokens');
- assert.equal(moment('05 30 2010', ['DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with bad date');
- assert.equal(moment('05 30 2010', ['', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with invalid format');
- assert.equal(moment('05 30 2010', [' DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with non-matching format');
- assert.equal(moment('2010.*...', 'YYYY.*', true).isValid(), false, 'invalid format with regex chars');
- assert.equal(moment('2010.*', 'YYYY.*', true).year(), 2010, 'valid format with regex chars');
- assert.equal(moment('.*2010.*', '.*YYYY.*', true).year(), 2010, 'valid format with regex chars on both sides');
- //strict tokens
- assert.equal(moment('-5-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid negative year');
- assert.equal(moment('2-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit year');
- assert.equal(moment('20-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid two-digit year');
- assert.equal(moment('201-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid three-digit year');
- assert.equal(moment('2010-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid four-digit year');
- assert.equal(moment('22010-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid five-digit year');
- assert.equal(moment('12-05-25', 'YY-MM-DD', true).isValid(), true, 'valid two-digit year');
- assert.equal(moment('2012-05-25', 'YY-MM-DD', true).isValid(), false, 'invalid four-digit year');
- assert.equal(moment('-5-05-25', 'Y-MM-DD', true).isValid(), true, 'valid negative year');
- assert.equal(moment('2-05-25', 'Y-MM-DD', true).isValid(), true, 'valid one-digit year');
- assert.equal(moment('20-05-25', 'Y-MM-DD', true).isValid(), true, 'valid two-digit year');
- assert.equal(moment('201-05-25', 'Y-MM-DD', true).isValid(), true, 'valid three-digit year');
- assert.equal(moment('2012-5-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month');
- assert.equal(moment('2012-5-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit month');
- assert.equal(moment('2012-05-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month');
- assert.equal(moment('2012-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid one-digit month');
- assert.equal(moment('2012-05-2', 'YYYY-MM-D', true).isValid(), true, 'valid one-digit day');
- assert.equal(moment('2012-05-2', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit day');
- assert.equal(moment('2012-05-02', 'YYYY-MM-D', true).isValid(), true, 'valid two-digit day');
- assert.equal(moment('2012-05-02', 'YYYY-MM-DD', true).isValid(), true, 'valid two-digit day');
- assert.equal(moment('+002012-05-25', 'YYYYY-MM-DD', true).isValid(), true, 'valid six-digit year');
- assert.equal(moment('+2012-05-25', 'YYYYY-MM-DD', true).isValid(), false, 'invalid four-digit year');
- //thse are kinda pointless, but they should work as expected
- assert.equal(moment('1', 'S', true).isValid(), true, 'valid one-digit milisecond');
- assert.equal(moment('12', 'S', true).isValid(), false, 'invalid two-digit milisecond');
- assert.equal(moment('123', 'S', true).isValid(), false, 'invalid three-digit milisecond');
- assert.equal(moment('1', 'SS', true).isValid(), false, 'invalid one-digit milisecond');
- assert.equal(moment('12', 'SS', true).isValid(), true, 'valid two-digit milisecond');
- assert.equal(moment('123', 'SS', true).isValid(), false, 'invalid three-digit milisecond');
- assert.equal(moment('1', 'SSS', true).isValid(), false, 'invalid one-digit milisecond');
- assert.equal(moment('12', 'SSS', true).isValid(), false, 'invalid two-digit milisecond');
- assert.equal(moment('123', 'SSS', true).isValid(), true, 'valid three-digit milisecond');
- // strict parsing respects month length
- assert.ok(moment('1 January 2000', 'D MMMM YYYY', true).isValid(), 'capital long-month + MMMM');
- assert.ok(!moment('1 January 2000', 'D MMM YYYY', true).isValid(), 'capital long-month + MMM');
- assert.ok(!moment('1 Jan 2000', 'D MMMM YYYY', true).isValid(), 'capital short-month + MMMM');
- assert.ok(moment('1 Jan 2000', 'D MMM YYYY', true).isValid(), 'capital short-month + MMM');
- assert.ok(moment('1 january 2000', 'D MMMM YYYY', true).isValid(), 'lower long-month + MMMM');
- assert.ok(!moment('1 january 2000', 'D MMM YYYY', true).isValid(), 'lower long-month + MMM');
- assert.ok(!moment('1 jan 2000', 'D MMMM YYYY', true).isValid(), 'lower short-month + MMMM');
- assert.ok(moment('1 jan 2000', 'D MMM YYYY', true).isValid(), 'lower short-month + MMM');
- });
- test('parsing into a locale', function (assert) {
- moment.defineLocale('parselocale', {
- months : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'),
- monthsShort : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_')
- });
- moment.locale('en');
- assert.equal(moment('2012 seven', 'YYYY MMM', 'parselocale').month(), 6, 'should be able to parse in a specific locale');
- moment.locale('parselocale');
- assert.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, 'should be able to parse in a specific locale');
- moment.defineLocale('parselocale', null);
- });
- function getVerifier(test$$1) {
- return function (input, format, expected, description, asymetrical) {
- var m = moment(input, format);
- test$$1.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description);
- //test round trip
- if (!asymetrical) {
- test$$1.equal(m.format(format), input, 'round trip: ' + description);
- }
- };
- }
- test('parsing week and weekday information', function (assert) {
- var ver = getVerifier(assert);
- var currentWeekOfYear = moment().weeks();
- var expectedDate2012 = moment([2012, 0, 1])
- .day(0)
- .add((currentWeekOfYear - 1), 'weeks')
- .format('YYYY MM DD');
- var expectedDate1999 = moment([1999, 0, 1])
- .day(0)
- .add((currentWeekOfYear - 1), 'weeks')
- .format('YYYY MM DD');
- // year
- ver('12', 'gg', expectedDate2012, 'week-year two digits');
- ver('2012', 'gggg', expectedDate2012, 'week-year four digits');
- ver('99', 'gg', expectedDate1999, 'week-year two digits previous year');
- ver('1999', 'gggg', expectedDate1999, 'week-year four digits previous year');
- ver('99', 'GG', '1999 01 04', 'iso week-year two digits');
- ver('1999', 'GGGG', '1999 01 04', 'iso week-year four digits');
- ver('13', 'GG', '2012 12 31', 'iso week-year two digits previous year');
- ver('2013', 'GGGG', '2012 12 31', 'iso week-year four digits previous year');
- // year + week
- ver('1999 37', 'gggg w', '1999 09 05', 'week');
- ver('1999 37', 'gggg ww', '1999 09 05', 'week double');
- ver('1999 37', 'GGGG W', '1999 09 13', 'iso week');
- ver('1999 37', 'GGGG WW', '1999 09 13', 'iso week double');
- ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso day');
- ver('1999 37 04', 'GGGG WW E', '1999 09 16', 'iso day wide', true);
- ver('1999 37 4', 'gggg ww e', '1999 09 09', 'day');
- ver('1999 37 04', 'gggg ww e', '1999 09 09', 'day wide', true);
- // year + week + day
- ver('1999 37 4', 'gggg ww d', '1999 09 09', 'd');
- ver('1999 37 Th', 'gggg ww dd', '1999 09 09', 'dd');
- ver('1999 37 Thu', 'gggg ww ddd', '1999 09 09', 'ddd');
- ver('1999 37 Thursday', 'gggg ww dddd', '1999 09 09', 'dddd');
- // lower-order only
- assert.equal(moment('22', 'ww').week(), 22, 'week sets the week by itself');
- assert.equal(moment('22', 'ww').weekYear(), moment().weekYear(), 'week keeps this year');
- assert.equal(moment('2012 22', 'YYYY ww').weekYear(), 2012, 'week keeps parsed year');
- assert.equal(moment('22', 'WW').isoWeek(), 22, 'iso week sets the week by itself');
- assert.equal(moment('2012 22', 'YYYY WW').weekYear(), 2012, 'iso week keeps parsed year');
- assert.equal(moment('22', 'WW').isoWeekYear(), moment().isoWeekYear(), 'iso week keeps this year');
- // order
- ver('6 2013 2', 'e gggg w', '2013 01 12', 'order doesn\'t matter');
- ver('6 2013 2', 'E GGGG W', '2013 01 12', 'iso order doesn\'t matter');
- //can parse other stuff too
- assert.equal(moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format('YYYY MM DD HH:mm'), '1999 09 16 03:30', 'parsing weeks and hours');
- // In safari, all years before 1300 are shifted back with one day.
- // http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300
- if (new Date('1300-01-01').getUTCFullYear() === 1300) {
- // Years less than 100
- ver('0098-06', 'GGGG-WW', '0098 02 03', 'small years work', true);
- }
- });
- test('parsing localized weekdays', function (assert) {
- var ver = getVerifier(assert);
- try {
- moment.locale('dow:1,doy:4', {
- weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
- weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
- weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
- week: {dow: 1, doy: 4}
- });
- ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso ignores locale');
- ver('1999 37 7', 'GGGG WW E', '1999 09 19', 'iso ignores locale');
- ver('1999 37 0', 'gggg ww e', '1999 09 13', 'localized e uses local doy and dow: 0 = monday');
- ver('1999 37 4', 'gggg ww e', '1999 09 17', 'localized e uses local doy and dow: 4 = friday');
- ver('1999 37 1', 'gggg ww d', '1999 09 13', 'localized d uses 0-indexed days: 1 = monday');
- ver('1999 37 Lu', 'gggg ww dd', '1999 09 13', 'localized d uses 0-indexed days: Mo');
- ver('1999 37 lun.', 'gggg ww ddd', '1999 09 13', 'localized d uses 0-indexed days: Mon');
- ver('1999 37 lundi', 'gggg ww dddd', '1999 09 13', 'localized d uses 0-indexed days: Monday');
- ver('1999 37 4', 'gggg ww d', '1999 09 16', 'localized d uses 0-indexed days: 4');
- //sunday goes at the end of the week
- ver('1999 37 0', 'gggg ww d', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund');
- ver('1999 37 Di', 'gggg ww dd', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund');
- }
- finally {
- moment.defineLocale('dow:1,doy:4', null);
- moment.locale('en');
- }
- });
- test('parsing with customized two-digit year', function (assert) {
- var original = moment.parseTwoDigitYear;
- try {
- assert.equal(moment('68', 'YY').year(), 2068);
- assert.equal(moment('69', 'YY').year(), 1969);
- moment.parseTwoDigitYear = function (input) {
- return +input + (+input > 30 ? 1900 : 2000);
- };
- assert.equal(moment('68', 'YY').year(), 1968);
- assert.equal(moment('67', 'YY').year(), 1967);
- assert.equal(moment('31', 'YY').year(), 1931);
- assert.equal(moment('30', 'YY').year(), 2030);
- }
- finally {
- moment.parseTwoDigitYear = original;
- }
- });
- test('array with strings', function (assert) {
- assert.equal(moment(['2014', '7', '31']).isValid(), true, 'string array + isValid');
- });
- test('object with strings', function (assert) {
- assert.equal(moment({year: '2014', month: '7', day: '31'}).isValid(), true, 'string object + isValid');
- });
- test('utc with array of formats', function (assert) {
- assert.equal(moment.utc('2014-01-01', ['YYYY-MM-DD', 'YYYY-MM']).format(), '2014-01-01T00:00:00Z', 'moment.utc works with array of formats');
- });
- test('parsing invalid string weekdays', function (assert) {
- assert.equal(false, moment('a', 'dd').isValid(),
- 'dd with invalid weekday, non-strict');
- assert.equal(false, moment('a', 'dd', true).isValid(),
- 'dd with invalid weekday, strict');
- assert.equal(false, moment('a', 'ddd').isValid(),
- 'ddd with invalid weekday, non-strict');
- assert.equal(false, moment('a', 'ddd', true).isValid(),
- 'ddd with invalid weekday, strict');
- assert.equal(false, moment('a', 'dddd').isValid(),
- 'dddd with invalid weekday, non-strict');
- assert.equal(false, moment('a', 'dddd', true).isValid(),
- 'dddd with invalid weekday, strict');
- });
- test('milliseconds', function (assert) {
- assert.equal(moment('1', 'S').millisecond(), 100);
- assert.equal(moment('12', 'SS').millisecond(), 120);
- assert.equal(moment('123', 'SSS').millisecond(), 123);
- assert.equal(moment('1234', 'SSSS').millisecond(), 123);
- assert.equal(moment('12345', 'SSSSS').millisecond(), 123);
- assert.equal(moment('123456', 'SSSSSS').millisecond(), 123);
- assert.equal(moment('1234567', 'SSSSSSS').millisecond(), 123);
- assert.equal(moment('12345678', 'SSSSSSSS').millisecond(), 123);
- assert.equal(moment('123456789', 'SSSSSSSSS').millisecond(), 123);
- });
- test('hmm', function (assert) {
- assert.equal(moment('123', 'hmm', true).format('HH:mm:ss'), '01:23:00', '123 with hmm');
- assert.equal(moment('123a', 'hmmA', true).format('HH:mm:ss'), '01:23:00', '123a with hmmA');
- assert.equal(moment('123p', 'hmmA', true).format('HH:mm:ss'), '13:23:00', '123p with hmmA');
- assert.equal(moment('1234', 'hmm', true).format('HH:mm:ss'), '12:34:00', '1234 with hmm');
- assert.equal(moment('1234a', 'hmmA', true).format('HH:mm:ss'), '00:34:00', '1234a with hmmA');
- assert.equal(moment('1234p', 'hmmA', true).format('HH:mm:ss'), '12:34:00', '1234p with hmmA');
- assert.equal(moment('12345', 'hmmss', true).format('HH:mm:ss'), '01:23:45', '12345 with hmmss');
- assert.equal(moment('12345a', 'hmmssA', true).format('HH:mm:ss'), '01:23:45', '12345a with hmmssA');
- assert.equal(moment('12345p', 'hmmssA', true).format('HH:mm:ss'), '13:23:45', '12345p with hmmssA');
- assert.equal(moment('112345', 'hmmss', true).format('HH:mm:ss'), '11:23:45', '112345 with hmmss');
- assert.equal(moment('112345a', 'hmmssA', true).format('HH:mm:ss'), '11:23:45', '112345a with hmmssA');
- assert.equal(moment('112345p', 'hmmssA', true).format('HH:mm:ss'), '23:23:45', '112345p with hmmssA');
- assert.equal(moment('023', 'Hmm', true).format('HH:mm:ss'), '00:23:00', '023 with Hmm');
- assert.equal(moment('123', 'Hmm', true).format('HH:mm:ss'), '01:23:00', '123 with Hmm');
- assert.equal(moment('1234', 'Hmm', true).format('HH:mm:ss'), '12:34:00', '1234 with Hmm');
- assert.equal(moment('1534', 'Hmm', true).format('HH:mm:ss'), '15:34:00', '1234 with Hmm');
- assert.equal(moment('12345', 'Hmmss', true).format('HH:mm:ss'), '01:23:45', '12345 with Hmmss');
- assert.equal(moment('112345', 'Hmmss', true).format('HH:mm:ss'), '11:23:45', '112345 with Hmmss');
- assert.equal(moment('172345', 'Hmmss', true).format('HH:mm:ss'), '17:23:45', '112345 with Hmmss');
- });
- test('Y token', function (assert) {
- assert.equal(moment('1-1-2010', 'M-D-Y', true).year(), 2010, 'parsing Y');
- });
- test('parsing flags retain parsed date parts', function (assert) {
- var a = moment('10 p', 'hh:mm a');
- assert.equal(a.parsingFlags().parsedDateParts[3], 10, 'parsed 10 as the hour');
- assert.equal(a.parsingFlags().parsedDateParts[0], undefined, 'year was not parsed');
- assert.equal(a.parsingFlags().meridiem, 'p', 'meridiem flag was added');
- var b = moment('10:30', ['MMDDYY', 'HH:mm']);
- assert.equal(b.parsingFlags().parsedDateParts[3], 10, 'multiple format parshing matched hour');
- assert.equal(b.parsingFlags().parsedDateParts[0], undefined, 'array is properly copied, no residual data from first token parse');
- });
- test('parsing only meridiem results in invalid date', function (assert) {
- assert.ok(!moment('alkj', 'hh:mm a').isValid(), 'because an a token is used, a meridiem will be parsed but nothing else was so invalid');
- assert.ok(moment('02:30 p more extra stuff', 'hh:mm a').isValid(), 'because other tokens were parsed, date is valid');
- assert.ok(moment('1/1/2016 extra data', ['a', 'M/D/YYYY']).isValid(), 'took second format, does not pick up on meridiem parsed from first format (good copy)');
- });
- test('invalid dates return invalid for methods that access the _d prop', function (assert) {
- var momentAsDate = moment(['2015', '12', '1']).toDate();
- assert.ok(momentAsDate instanceof Date, 'toDate returns a Date object');
- assert.ok(isNaN(momentAsDate.getTime()), 'toDate returns an invalid Date invalid');
- });
- test('k, kk', function (assert) {
- for (var i = -1; i <= 24; i++) {
- var kVal = i + ':15:59';
- var kkVal = (i < 10 ? '0' : '') + i + ':15:59';
- if (i !== 24) {
- assert.ok(moment(kVal, 'k:mm:ss').isSame(moment(kVal, 'H:mm:ss')), kVal + ' k parsing');
- assert.ok(moment(kkVal, 'kk:mm:ss').isSame(moment(kkVal, 'HH:mm:ss')), kkVal + ' kk parsing');
- } else {
- assert.equal(moment(kVal, 'k:mm:ss').format('k:mm:ss'), kVal, kVal + ' k parsing');
- assert.equal(moment(kkVal, 'kk:mm:ss').format('kk:mm:ss'), kkVal, kkVal + ' skk parsing');
- }
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('creation data');
- test('valid date', function (assert) {
- var dat = moment('1992-10-22');
- var orig = dat.creationData();
- assert.equal(dat.isValid(), true, '1992-10-22 is valid');
- assert.equal(orig.input, '1992-10-22', 'original input is not correct.');
- assert.equal(orig.format, 'YYYY-MM-DD', 'original format is defined.');
- assert.equal(orig.locale._abbr, 'en', 'default locale is en');
- assert.equal(orig.isUTC, false, 'not a UTC date');
- });
- test('valid date at fr locale', function (assert) {
- var dat = moment('1992-10-22', 'YYYY-MM-DD', 'fr');
- var orig = dat.creationData();
- assert.equal(orig.locale._abbr, 'fr', 'locale is fr');
- });
- test('valid date with formats', function (assert) {
- var dat = moment('29-06-1995', ['MM-DD-YYYY', 'DD-MM', 'DD-MM-YYYY']);
- var orig = dat.creationData();
- assert.equal(orig.format, 'DD-MM-YYYY', 'DD-MM-YYYY format is defined.');
- });
- test('strict', function (assert) {
- assert.ok(moment('2015-01-02', 'YYYY-MM-DD', true).creationData().strict, 'strict is true');
- assert.ok(!moment('2015-01-02', 'YYYY-MM-DD').creationData().strict, 'strict is true');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('days in month');
- test('days in month', function (assert) {
- each([31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], function (days, i) {
- var firstDay = moment([2012, i]),
- lastDay = moment([2012, i, days]);
- assert.equal(firstDay.daysInMonth(), days, firstDay.format('L') + ' should have ' + days + ' days.');
- assert.equal(lastDay.daysInMonth(), days, lastDay.format('L') + ' should have ' + days + ' days.');
- });
- });
- test('days in month leap years', function (assert) {
- assert.equal(moment([2010, 1]).daysInMonth(), 28, 'Feb 2010 should have 28 days');
- assert.equal(moment([2100, 1]).daysInMonth(), 28, 'Feb 2100 should have 28 days');
- assert.equal(moment([2008, 1]).daysInMonth(), 29, 'Feb 2008 should have 29 days');
- assert.equal(moment([2000, 1]).daysInMonth(), 29, 'Feb 2000 should have 29 days');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('days in year');
- // https://github.com/moment/moment/issues/3717
- test('YYYYDDD should not parse DDD=000', function (assert) {
- assert.equal(moment(7000000, moment.ISO_8601, true).isValid(), false);
- assert.equal(moment('7000000', moment.ISO_8601, true).isValid(), false);
- assert.equal(moment(7000000, moment.ISO_8601, false).isValid(), false);
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- function hasOwnProp(a, b) {
- return Object.prototype.hasOwnProperty.call(a, b);
- }
- function extend(a, b) {
- for (var i in b) {
- if (hasOwnProp(b, i)) {
- a[i] = b[i];
- }
- }
- if (hasOwnProp(b, 'toString')) {
- a.toString = b.toString;
- }
- if (hasOwnProp(b, 'valueOf')) {
- a.valueOf = b.valueOf;
- }
- return a;
- }
- var hookCallback;
- function hooks () {
- return hookCallback.apply(null, arguments);
- }
- function warn(msg) {
- if (hooks.suppressDeprecationWarnings === false &&
- (typeof console !== 'undefined') && console.warn) {
- console.warn('Deprecation warning: ' + msg);
- }
- }
- function deprecate(msg, fn) {
- var firstTime = true;
- return extend(function () {
- if (hooks.deprecationHandler != null) {
- hooks.deprecationHandler(null, msg);
- }
- if (firstTime) {
- var args = [];
- var arg;
- for (var i = 0; i < arguments.length; i++) {
- arg = '';
- if (typeof arguments[i] === 'object') {
- arg += '\n[' + i + '] ';
- for (var key in arguments[0]) {
- arg += key + ': ' + arguments[0][key] + ', ';
- }
- arg = arg.slice(0, -2); // Remove trailing comma and space
- } else {
- arg = arguments[i];
- }
- args.push(arg);
- }
- warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
- firstTime = false;
- }
- return fn.apply(this, arguments);
- }, fn);
- }
- var deprecations = {};
- hooks.suppressDeprecationWarnings = false;
- hooks.deprecationHandler = null;
- module$1('deprecate');
- test('deprecate', function (assert) {
- // NOTE: hooks inside deprecate.js and moment are different, so this is can
- // not be test.expectedDeprecations(...)
- var fn = function () {};
- var deprecatedFn = deprecate('testing deprecation', fn);
- deprecatedFn();
- expect(0);
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- function equal(assert, a, b, message) {
- assert.ok(Math.abs(a - b) < 0.00000001, '(' + a + ' === ' + b + ') ' + message);
- }
- function dstForYear(year) {
- var start = moment([year]),
- end = moment([year + 1]),
- current = start.clone(),
- last;
- while (current < end) {
- last = current.clone();
- current.add(24, 'hour');
- if (last.utcOffset() !== current.utcOffset()) {
- end = current.clone();
- current = last.clone();
- break;
- }
- }
- while (current < end) {
- last = current.clone();
- current.add(1, 'hour');
- if (last.utcOffset() !== current.utcOffset()) {
- return {
- moment : last,
- diff : -(current.utcOffset() - last.utcOffset()) / 60
- };
- }
- }
- }
- module$1('diff');
- test('diff', function (assert) {
- assert.equal(moment(1000).diff(0), 1000, '1 second - 0 = 1000');
- assert.equal(moment(1000).diff(500), 500, '1 second - 0.5 seconds = 500');
- assert.equal(moment(0).diff(1000), -1000, '0 - 1 second = -1000');
- assert.equal(moment(new Date(1000)).diff(1000), 0, '1 second - 1 second = 0');
- var oneHourDate = new Date(2015, 5, 21),
- nowDate = new Date(+oneHourDate);
- oneHourDate.setHours(oneHourDate.getHours() + 1);
- assert.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, '1 hour from now = 3600000');
- });
- test('diff key after', function (assert) {
- assert.equal(moment([2010]).diff([2011], 'years'), -1, 'year diff');
- assert.equal(moment([2010]).diff([2010, 2], 'months'), -2, 'month diff');
- assert.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, 'week diff');
- assert.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, 'week diff');
- assert.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, 'week diff');
- assert.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, 'week diff');
- assert.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, 'day diff');
- assert.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, 'hour diff');
- assert.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, 'minute diff');
- assert.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, 'second diff');
- });
- test('diff key before', function (assert) {
- assert.equal(moment([2011]).diff([2010], 'years'), 1, 'year diff');
- assert.equal(moment([2010, 2]).diff([2010], 'months'), 2, 'month diff');
- assert.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, 'day diff');
- assert.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, 'week diff');
- assert.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, 'week diff');
- assert.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, 'week diff');
- assert.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, 'week diff');
- assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, 'hour diff');
- assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, 'minute diff');
- assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, 'second diff');
- });
- test('diff key before singular', function (assert) {
- assert.equal(moment([2011]).diff([2010], 'year'), 1, 'year diff singular');
- assert.equal(moment([2010, 2]).diff([2010], 'month'), 2, 'month diff singular');
- assert.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, 'day diff singular');
- assert.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, 'week diff singular');
- assert.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, 'week diff singular');
- assert.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, 'week diff singular');
- assert.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, 'week diff singular');
- assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, 'hour diff singular');
- assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, 'minute diff singular');
- assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, 'second diff singular');
- });
- test('diff key before abbreviated', function (assert) {
- assert.equal(moment([2011]).diff([2010], 'y'), 1, 'year diff abbreviated');
- assert.equal(moment([2010, 2]).diff([2010], 'M'), 2, 'month diff abbreviated');
- assert.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, 'day diff abbreviated');
- assert.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, 'week diff abbreviated');
- assert.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, 'week diff abbreviated');
- assert.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, 'week diff abbreviated');
- assert.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, 'week diff abbreviated');
- assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, 'hour diff abbreviated');
- assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, 'minute diff abbreviated');
- assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, 'second diff abbreviated');
- });
- test('diff month', function (assert) {
- assert.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, 'month diff');
- });
- test('diff across DST', function (assert) {
- var dst = dstForYear(2012), a, b, daysInMonth;
- if (!dst) {
- assert.equal(42, 42, 'at least one assertion');
- return;
- }
- a = dst.moment;
- b = a.clone().utc().add(12, 'hours').local();
- daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2;
- assert.equal(b.diff(a, 'milliseconds', true), 12 * 60 * 60 * 1000,
- 'ms diff across DST');
- assert.equal(b.diff(a, 'seconds', true), 12 * 60 * 60,
- 'second diff across DST');
- assert.equal(b.diff(a, 'minutes', true), 12 * 60,
- 'minute diff across DST');
- assert.equal(b.diff(a, 'hours', true), 12,
- 'hour diff across DST');
- assert.equal(b.diff(a, 'days', true), (12 - dst.diff) / 24,
- 'day diff across DST');
- equal(assert, b.diff(a, 'weeks', true), (12 - dst.diff) / 24 / 7,
- 'week diff across DST');
- assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true),
- 'month diff across DST, lower bound');
- assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28),
- 'month diff across DST, upper bound');
- assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true),
- 'year diff across DST, lower bound');
- assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12),
- 'year diff across DST, upper bound');
- a = dst.moment;
- b = a.clone().utc().add(12 + dst.diff, 'hours').local();
- daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2;
- assert.equal(b.diff(a, 'milliseconds', true),
- (12 + dst.diff) * 60 * 60 * 1000,
- 'ms diff across DST');
- assert.equal(b.diff(a, 'seconds', true), (12 + dst.diff) * 60 * 60,
- 'second diff across DST');
- assert.equal(b.diff(a, 'minutes', true), (12 + dst.diff) * 60,
- 'minute diff across DST');
- assert.equal(b.diff(a, 'hours', true), (12 + dst.diff),
- 'hour diff across DST');
- assert.equal(b.diff(a, 'days', true), 12 / 24, 'day diff across DST');
- equal(assert, b.diff(a, 'weeks', true), 12 / 24 / 7,
- 'week diff across DST');
- assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true),
- 'month diff across DST, lower bound');
- assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28),
- 'month diff across DST, upper bound');
- assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true),
- 'year diff across DST, lower bound');
- assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12),
- 'year diff across DST, upper bound');
- });
- test('diff overflow', function (assert) {
- assert.equal(moment([2011]).diff([2010], 'months'), 12, 'month diff');
- assert.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, 'hour diff');
- assert.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, 'minute diff');
- assert.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, 'second diff');
- });
- test('diff between utc and local', function (assert) {
- if (moment([2012]).utcOffset() === moment([2011]).utcOffset()) {
- // Russia's utc offset on 1st of Jan 2012 vs 2011 is different
- assert.equal(moment([2012]).utc().diff([2011], 'years'), 1, 'year diff');
- }
- assert.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, 'month diff');
- assert.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, 'day diff');
- assert.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, 'week diff');
- assert.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, 'hour diff');
- assert.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, 'minute diff');
- assert.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, 'second diff');
- });
- test('diff floored', function (assert) {
- assert.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, '23 hours = 0 days');
- assert.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, '23:59 hours = 0 days');
- assert.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, '24 hours = 1 day');
- assert.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, 'year rounded down');
- assert.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, 'year rounded down');
- assert.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, 'year rounded down');
- assert.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, 'year rounded down');
- });
- test('year diffs include dates', function (assert) {
- assert.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, 'year diff should include date of month');
- });
- test('month diffs', function (assert) {
- // due to floating point math errors, these tests just need to be accurate within 0.00000001
- assert.equal(moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month');
- equal(assert, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5 / 31, 'Jan 1 to Jan 1 noon should be 0.5 / 31 months');
- assert.equal(moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month');
- assert.equal(moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month');
- assert.ok(moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1, 'Jan 31 to Feb 29 should be 1 month');
- assert.ok(-1 > moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be more than 1 month');
- assert.ok(-30 / 28 < moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be less than 1 month and 1 day');
- equal(assert, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30 / 31 months');
- assert.ok(0 < moment('2014-02-01').diff(moment('2014-01-31'), 'months', true), 'jan-31 to feb-1 diff is positive');
- });
- test('exact month diffs', function (assert) {
- // generate all pairs of months and compute month diff, with fixed day
- // of month = 15.
- var m1, m2;
- for (m1 = 0; m1 < 12; ++m1) {
- for (m2 = m1; m2 < 12; ++m2) {
- assert.equal(moment([2013, m2, 15]).diff(moment([2013, m1, 15]), 'months', true), m2 - m1,
- 'month diff from 2013-' + m1 + '-15 to 2013-' + m2 + '-15');
- }
- }
- });
- test('year diffs', function (assert) {
- // due to floating point math errors, these tests just need to be accurate within 0.00000001
- equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year');
- equal(assert, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year');
- equal(assert, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year');
- equal(assert, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year');
- equal(assert, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year');
- equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years');
- equal(assert, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years');
- equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1 - (0.5 / 31) / 12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years');
- equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years');
- equal(assert, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years');
- });
- test('negative zero', function (assert) {
- function isNegative (n) {
- return (1 / n) < 0;
- }
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'months')), 'month diff on same date is zero, not -0');
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'years')), 'year diff on same date is zero, not -0');
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'quarters')), 'quarter diff on same date is zero, not -0');
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 1]), 'days')), 'days diff on same date is zero, not -0');
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 1]), 'hours')), 'hour diff on same hour is zero, not -0');
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 1]), 'minutes')), 'minute diff on same minute is zero, not -0');
- assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 0, 1]), 'seconds')), 'second diff on same second is zero, not -0');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('duration');
- test('object instantiation', function (assert) {
- var d = moment.duration({
- years: 2,
- months: 3,
- weeks: 2,
- days: 1,
- hours: 8,
- minutes: 9,
- seconds: 20,
- milliseconds: 12
- });
- assert.equal(d.years(), 2, 'years');
- assert.equal(d.months(), 3, 'months');
- assert.equal(d.weeks(), 2, 'weeks');
- assert.equal(d.days(), 15, 'days'); // two weeks + 1 day
- assert.equal(d.hours(), 8, 'hours');
- assert.equal(d.minutes(), 9, 'minutes');
- assert.equal(d.seconds(), 20, 'seconds');
- assert.equal(d.milliseconds(), 12, 'milliseconds');
- });
- test('object instantiation with strings', function (assert) {
- var d = moment.duration({
- years: '2',
- months: '3',
- weeks: '2',
- days: '1',
- hours: '8',
- minutes: '9',
- seconds: '20',
- milliseconds: '12'
- });
- assert.equal(d.years(), 2, 'years');
- assert.equal(d.months(), 3, 'months');
- assert.equal(d.weeks(), 2, 'weeks');
- assert.equal(d.days(), 15, 'days'); // two weeks + 1 day
- assert.equal(d.hours(), 8, 'hours');
- assert.equal(d.minutes(), 9, 'minutes');
- assert.equal(d.seconds(), 20, 'seconds');
- assert.equal(d.milliseconds(), 12, 'milliseconds');
- });
- test('milliseconds instantiation', function (assert) {
- assert.equal(moment.duration(72).milliseconds(), 72, 'milliseconds');
- assert.equal(moment.duration(72).humanize(), 'a few seconds', 'Duration should be valid');
- });
- test('undefined instantiation', function (assert) {
- assert.equal(moment.duration(undefined).milliseconds(), 0, 'milliseconds');
- assert.equal(moment.duration(undefined).isValid(), true, '_isValid');
- assert.equal(moment.duration(undefined).humanize(), 'a few seconds', 'Duration should be valid');
- });
- test('null instantiation', function (assert) {
- assert.equal(moment.duration(null).milliseconds(), 0, 'milliseconds');
- assert.equal(moment.duration(null).isValid(), true, '_isValid');
- assert.equal(moment.duration(null).humanize(), 'a few seconds', 'Duration should be valid');
- });
- test('NaN instantiation', function (assert) {
- assert.ok(isNaN(moment.duration(NaN).milliseconds()), 'milliseconds should be NaN');
- assert.equal(moment.duration(NaN).isValid(), false, '_isValid');
- assert.equal(moment.duration(NaN).humanize(), 'Invalid date', 'Duration should be invalid');
- });
- test('instantiation by type', function (assert) {
- assert.equal(moment.duration(1, 'years').years(), 1, 'years');
- assert.equal(moment.duration(1, 'y').years(), 1, 'y');
- assert.equal(moment.duration(2, 'months').months(), 2, 'months');
- assert.equal(moment.duration(2, 'M').months(), 2, 'M');
- assert.equal(moment.duration(3, 'weeks').weeks(), 3, 'weeks');
- assert.equal(moment.duration(3, 'w').weeks(), 3, 'weeks');
- assert.equal(moment.duration(4, 'days').days(), 4, 'days');
- assert.equal(moment.duration(4, 'd').days(), 4, 'd');
- assert.equal(moment.duration(5, 'hours').hours(), 5, 'hours');
- assert.equal(moment.duration(5, 'h').hours(), 5, 'h');
- assert.equal(moment.duration(6, 'minutes').minutes(), 6, 'minutes');
- assert.equal(moment.duration(6, 'm').minutes(), 6, 'm');
- assert.equal(moment.duration(7, 'seconds').seconds(), 7, 'seconds');
- assert.equal(moment.duration(7, 's').seconds(), 7, 's');
- assert.equal(moment.duration(8, 'milliseconds').milliseconds(), 8, 'milliseconds');
- assert.equal(moment.duration(8, 'ms').milliseconds(), 8, 'ms');
- });
- test('shortcuts', function (assert) {
- assert.equal(moment.duration({y: 1}).years(), 1, 'years = y');
- assert.equal(moment.duration({M: 2}).months(), 2, 'months = M');
- assert.equal(moment.duration({w: 3}).weeks(), 3, 'weeks = w');
- assert.equal(moment.duration({d: 4}).days(), 4, 'days = d');
- assert.equal(moment.duration({h: 5}).hours(), 5, 'hours = h');
- assert.equal(moment.duration({m: 6}).minutes(), 6, 'minutes = m');
- assert.equal(moment.duration({s: 7}).seconds(), 7, 'seconds = s');
- assert.equal(moment.duration({ms: 8}).milliseconds(), 8, 'milliseconds = ms');
- });
- test('generic getter', function (assert) {
- assert.equal(moment.duration(1, 'years').get('years'), 1, 'years');
- assert.equal(moment.duration(1, 'years').get('year'), 1, 'years = year');
- assert.equal(moment.duration(1, 'years').get('y'), 1, 'years = y');
- assert.equal(moment.duration(2, 'months').get('months'), 2, 'months');
- assert.equal(moment.duration(2, 'months').get('month'), 2, 'months = month');
- assert.equal(moment.duration(2, 'months').get('M'), 2, 'months = M');
- assert.equal(moment.duration(3, 'weeks').get('weeks'), 3, 'weeks');
- assert.equal(moment.duration(3, 'weeks').get('week'), 3, 'weeks = week');
- assert.equal(moment.duration(3, 'weeks').get('w'), 3, 'weeks = w');
- assert.equal(moment.duration(4, 'days').get('days'), 4, 'days');
- assert.equal(moment.duration(4, 'days').get('day'), 4, 'days = day');
- assert.equal(moment.duration(4, 'days').get('d'), 4, 'days = d');
- assert.equal(moment.duration(5, 'hours').get('hours'), 5, 'hours');
- assert.equal(moment.duration(5, 'hours').get('hour'), 5, 'hours = hour');
- assert.equal(moment.duration(5, 'hours').get('h'), 5, 'hours = h');
- assert.equal(moment.duration(6, 'minutes').get('minutes'), 6, 'minutes');
- assert.equal(moment.duration(6, 'minutes').get('minute'), 6, 'minutes = minute');
- assert.equal(moment.duration(6, 'minutes').get('m'), 6, 'minutes = m');
- assert.equal(moment.duration(7, 'seconds').get('seconds'), 7, 'seconds');
- assert.equal(moment.duration(7, 'seconds').get('second'), 7, 'seconds = second');
- assert.equal(moment.duration(7, 'seconds').get('s'), 7, 'seconds = s');
- assert.equal(moment.duration(8, 'milliseconds').get('milliseconds'), 8, 'milliseconds');
- assert.equal(moment.duration(8, 'milliseconds').get('millisecond'), 8, 'milliseconds = millisecond');
- assert.equal(moment.duration(8, 'milliseconds').get('ms'), 8, 'milliseconds = ms');
- });
- test('instantiation from another duration', function (assert) {
- var simple = moment.duration(1234),
- lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3),
- complicated = moment.duration({
- years: 2,
- months: 3,
- weeks: 4,
- days: 1,
- hours: 8,
- minutes: 9,
- seconds: 20,
- milliseconds: 12
- }),
- modified = moment.duration(1, 'day').add(moment.duration(1, 'day'));
- assert.deepEqual(moment.duration(simple), simple, 'simple clones are equal');
- assert.deepEqual(moment.duration(lengthy), lengthy, 'lengthy clones are equal');
- assert.deepEqual(moment.duration(complicated), complicated, 'complicated clones are equal');
- assert.deepEqual(moment.duration(modified), modified, 'cloning modified duration works');
- });
- test('instantiation from 24-hour time zero', function (assert) {
- assert.equal(moment.duration('00:00').years(), 0, '0 years');
- assert.equal(moment.duration('00:00').days(), 0, '0 days');
- assert.equal(moment.duration('00:00').hours(), 0, '0 hours');
- assert.equal(moment.duration('00:00').minutes(), 0, '0 minutes');
- assert.equal(moment.duration('00:00').seconds(), 0, '0 seconds');
- assert.equal(moment.duration('00:00').milliseconds(), 0, '0 milliseconds');
- });
- test('instantiation from 24-hour time <24 hours', function (assert) {
- assert.equal(moment.duration('06:45').years(), 0, '0 years');
- assert.equal(moment.duration('06:45').days(), 0, '0 days');
- assert.equal(moment.duration('06:45').hours(), 6, '6 hours');
- assert.equal(moment.duration('06:45').minutes(), 45, '45 minutes');
- assert.equal(moment.duration('06:45').seconds(), 0, '0 seconds');
- assert.equal(moment.duration('06:45').milliseconds(), 0, '0 milliseconds');
- });
- test('instantiation from 24-hour time >24 hours', function (assert) {
- assert.equal(moment.duration('26:45').years(), 0, '0 years');
- assert.equal(moment.duration('26:45').days(), 1, '0 days');
- assert.equal(moment.duration('26:45').hours(), 2, '2 hours');
- assert.equal(moment.duration('26:45').minutes(), 45, '45 minutes');
- assert.equal(moment.duration('26:45').seconds(), 0, '0 seconds');
- assert.equal(moment.duration('26:45').milliseconds(), 0, '0 milliseconds');
- });
- test('instatiation from serialized C# TimeSpan zero', function (assert) {
- assert.equal(moment.duration('00:00:00').years(), 0, '0 years');
- assert.equal(moment.duration('00:00:00').days(), 0, '0 days');
- assert.equal(moment.duration('00:00:00').hours(), 0, '0 hours');
- assert.equal(moment.duration('00:00:00').minutes(), 0, '0 minutes');
- assert.equal(moment.duration('00:00:00').seconds(), 0, '0 seconds');
- assert.equal(moment.duration('00:00:00').milliseconds(), 0, '0 milliseconds');
- });
- test('instatiation from serialized C# TimeSpan with days', function (assert) {
- assert.equal(moment.duration('1.02:03:04.9999999').years(), 0, '0 years');
- assert.equal(moment.duration('1.02:03:04.9999999').days(), 1, '1 day');
- assert.equal(moment.duration('1.02:03:04.9999999').hours(), 2, '2 hours');
- assert.equal(moment.duration('1.02:03:04.9999999').minutes(), 3, '3 minutes');
- assert.equal(moment.duration('1.02:03:04.9999999').seconds(), 5, '5 seconds');
- assert.equal(moment.duration('1.02:03:04.9999999').milliseconds(), 0, '0 milliseconds');
- assert.equal(moment.duration('1 02:03:04.9999999').years(), 0, '0 years');
- assert.equal(moment.duration('1 02:03:04.9999999').days(), 1, '1 day');
- assert.equal(moment.duration('1 02:03:04.9999999').hours(), 2, '2 hours');
- assert.equal(moment.duration('1 02:03:04.9999999').minutes(), 3, '3 minutes');
- assert.equal(moment.duration('1 02:03:04.9999999').seconds(), 5, '5 seconds');
- assert.equal(moment.duration('1 02:03:04.9999999').milliseconds(), 0, '0 milliseconds');
- });
- test('instatiation from serialized C# TimeSpan without days', function (assert) {
- assert.equal(moment.duration('01:02:03.9999999').years(), 0, '0 years');
- assert.equal(moment.duration('01:02:03.9999999').days(), 0, '0 days');
- assert.equal(moment.duration('01:02:03.9999999').hours(), 1, '1 hour');
- assert.equal(moment.duration('01:02:03.9999999').minutes(), 2, '2 minutes');
- assert.equal(moment.duration('01:02:03.9999999').seconds(), 4, '4 seconds');
- assert.equal(moment.duration('01:02:03.9999999').milliseconds(), 0, '0 milliseconds');
- assert.equal(moment.duration('23:59:59.9999999').days(), 1, '1 days');
- assert.equal(moment.duration('23:59:59.9999999').hours(), 0, '0 hours');
- assert.equal(moment.duration('23:59:59.9999999').minutes(), 0, '0 minutes');
- assert.equal(moment.duration('23:59:59.9999999').seconds(), 0, '0 seconds');
- assert.equal(moment.duration('23:59:59.9999999').milliseconds(), 0, '0 milliseconds');
- assert.equal(moment.duration('500:59:59.8888888').days(), 20, '500 hours overflows to 20 days');
- assert.equal(moment.duration('500:59:59.8888888').hours(), 20, '500 hours overflows to 20 hours');
- });
- test('instatiation from serialized C# TimeSpan without days or milliseconds', function (assert) {
- assert.equal(moment.duration('01:02:03').years(), 0, '0 years');
- assert.equal(moment.duration('01:02:03').days(), 0, '0 days');
- assert.equal(moment.duration('01:02:03').hours(), 1, '1 hour');
- assert.equal(moment.duration('01:02:03').minutes(), 2, '2 minutes');
- assert.equal(moment.duration('01:02:03').seconds(), 3, '3 seconds');
- assert.equal(moment.duration('01:02:03').milliseconds(), 0, '0 milliseconds');
- });
- test('instatiation from serialized C# TimeSpan without milliseconds', function (assert) {
- assert.equal(moment.duration('1.02:03:04').years(), 0, '0 years');
- assert.equal(moment.duration('1.02:03:04').days(), 1, '1 day');
- assert.equal(moment.duration('1.02:03:04').hours(), 2, '2 hours');
- assert.equal(moment.duration('1.02:03:04').minutes(), 3, '3 minutes');
- assert.equal(moment.duration('1.02:03:04').seconds(), 4, '4 seconds');
- assert.equal(moment.duration('1.02:03:04').milliseconds(), 0, '0 milliseconds');
- });
- test('instantiation from serialized C# TimeSpan with low millisecond precision', function (assert) {
- assert.equal(moment.duration('00:00:15.72').years(), 0, '0 years');
- assert.equal(moment.duration('00:00:15.72').days(), 0, '0 days');
- assert.equal(moment.duration('00:00:15.72').hours(), 0, '0 hours');
- assert.equal(moment.duration('00:00:15.72').minutes(), 0, '0 minutes');
- assert.equal(moment.duration('00:00:15.72').seconds(), 15, '15 seconds');
- assert.equal(moment.duration('00:00:15.72').milliseconds(), 720, '720 milliseconds');
- assert.equal(moment.duration('00:00:15.7').milliseconds(), 700, '700 milliseconds');
- assert.equal(moment.duration('00:00:15.').milliseconds(), 0, '0 milliseconds');
- });
- test('instantiation from serialized C# TimeSpan with high millisecond precision', function (assert) {
- assert.equal(moment.duration('00:00:15.7200000').seconds(), 15, '15 seconds');
- assert.equal(moment.duration('00:00:15.7200000').milliseconds(), 720, '720 milliseconds');
- assert.equal(moment.duration('00:00:15.7209999').seconds(), 15, '15 seconds');
- assert.equal(moment.duration('00:00:15.7209999').milliseconds(), 721, '721 milliseconds');
- assert.equal(moment.duration('00:00:15.7205000').seconds(), 15, '15 seconds');
- assert.equal(moment.duration('00:00:15.7205000').milliseconds(), 721, '721 milliseconds');
- assert.equal(moment.duration('-00:00:15.7205000').seconds(), -15, '15 seconds');
- assert.equal(moment.duration('-00:00:15.7205000').milliseconds(), -721, '721 milliseconds');
- });
- test('instatiation from serialized C# TimeSpan maxValue', function (assert) {
- var d = moment.duration('10675199.02:48:05.4775807');
- assert.equal(d.years(), 29227, '29227 years');
- assert.equal(d.months(), 8, '8 months');
- assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it
- assert.equal(d.hours(), 2, '2 hours');
- assert.equal(d.minutes(), 48, '48 minutes');
- assert.equal(d.seconds(), 5, '5 seconds');
- assert.equal(d.milliseconds(), 478, '478 milliseconds');
- });
- test('instatiation from serialized C# TimeSpan minValue', function (assert) {
- var d = moment.duration('-10675199.02:48:05.4775808');
- assert.equal(d.years(), -29227, '29653 years');
- assert.equal(d.months(), -8, '8 day');
- assert.equal(d.days(), -12, '12 day'); // if you have to change this value -- just do it
- assert.equal(d.hours(), -2, '2 hours');
- assert.equal(d.minutes(), -48, '48 minutes');
- assert.equal(d.seconds(), -5, '5 seconds');
- assert.equal(d.milliseconds(), -478, '478 milliseconds');
- });
- test('instantiation from ISO 8601 duration', function (assert) {
- assert.equal(moment.duration('P1Y2M3DT4H5M6S').asSeconds(), moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).asSeconds(), 'all fields');
- assert.equal(moment.duration('P3W3D').asSeconds(), moment.duration({w: 3, d: 3}).asSeconds(), 'week and day fields');
- assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'single month field');
- assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'single minute field');
- assert.equal(moment.duration('P1MT2H').asSeconds(), moment.duration({M: 1, h: 2}).asSeconds(), 'random fields missing');
- assert.equal(moment.duration('-P60D').asSeconds(), moment.duration({d: -60}).asSeconds(), 'negative days');
- assert.equal(moment.duration('PT0.5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds');
- assert.equal(moment.duration('PT0,5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds (comma)');
- });
- test('serialization to ISO 8601 duration strings', function (assert) {
- assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toISOString(), 'P1Y2M3DT4H5M6S', 'all fields');
- assert.equal(moment.duration({M: -1}).toISOString(), '-P1M', 'one month ago');
- assert.equal(moment.duration({m: -1}).toISOString(), '-PT1M', 'one minute ago');
- assert.equal(moment.duration({s: -0.5}).toISOString(), '-PT0.5S', 'one half second ago');
- assert.equal(moment.duration({y: -1, M: 1}).toISOString(), '-P11M', 'a month after a year ago');
- assert.equal(moment.duration({}).toISOString(), 'P0D', 'zero duration');
- assert.equal(moment.duration({M: 16, d:40, s: 86465}).toISOString(), 'P1Y4M40DT24H1M5S', 'all fields');
- });
- test('toString acts as toISOString', function (assert) {
- assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toString(), 'P1Y2M3DT4H5M6S', 'all fields');
- assert.equal(moment.duration({M: -1}).toString(), '-P1M', 'one month ago');
- assert.equal(moment.duration({m: -1}).toString(), '-PT1M', 'one minute ago');
- assert.equal(moment.duration({s: -0.5}).toString(), '-PT0.5S', 'one half second ago');
- assert.equal(moment.duration({y: -1, M: 1}).toString(), '-P11M', 'a month after a year ago');
- assert.equal(moment.duration({}).toString(), 'P0D', 'zero duration');
- assert.equal(moment.duration({M: 16, d:40, s: 86465}).toString(), 'P1Y4M40DT24H1M5S', 'all fields');
- });
- test('toIsoString deprecation', function (assert) {
- test.expectedDeprecations('toIsoString()');
- assert.equal(moment.duration({}).toIsoString(), moment.duration({}).toISOString(), 'toIsoString delegates to toISOString');
- });
- test('`isodate` (python) test cases', function (assert) {
- assert.equal(moment.duration('P18Y9M4DT11H9M8S').asSeconds(), moment.duration({y: 18, M: 9, d: 4, h: 11, m: 9, s: 8}).asSeconds(), 'python isodate 1');
- assert.equal(moment.duration('P2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 2');
- assert.equal(moment.duration('P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 3');
- assert.equal(moment.duration('P23DT23H').asSeconds(), moment.duration({d: 23, h: 23}).asSeconds(), 'python isodate 4');
- assert.equal(moment.duration('P4Y').asSeconds(), moment.duration({y: 4}).asSeconds(), 'python isodate 5');
- assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'python isodate 6');
- assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'python isodate 7');
- assert.equal(moment.duration('P0.5Y').asSeconds(), moment.duration({y: 0.5}).asSeconds(), 'python isodate 8');
- assert.equal(moment.duration('PT36H').asSeconds(), moment.duration({h: 36}).asSeconds(), 'python isodate 9');
- assert.equal(moment.duration('P1DT12H').asSeconds(), moment.duration({d: 1, h: 12}).asSeconds(), 'python isodate 10');
- assert.equal(moment.duration('-P2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 11');
- assert.equal(moment.duration('-P2.2W').asSeconds(), moment.duration({w: -2.2}).asSeconds(), 'python isodate 12');
- assert.equal(moment.duration('P1DT2H3M4S').asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 13');
- assert.equal(moment.duration('P1DT2H3M').asSeconds(), moment.duration({d: 1, h: 2, m: 3}).asSeconds(), 'python isodate 14');
- assert.equal(moment.duration('P1DT2H').asSeconds(), moment.duration({d: 1, h: 2}).asSeconds(), 'python isodate 15');
- assert.equal(moment.duration('PT2H').asSeconds(), moment.duration({h: 2}).asSeconds(), 'python isodate 16');
- assert.equal(moment.duration('PT2.3H').asSeconds(), moment.duration({h: 2.3}).asSeconds(), 'python isodate 17');
- assert.equal(moment.duration('PT2H3M4S').asSeconds(), moment.duration({h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 18');
- assert.equal(moment.duration('PT3M4S').asSeconds(), moment.duration({m: 3, s: 4}).asSeconds(), 'python isodate 19');
- assert.equal(moment.duration('PT22S').asSeconds(), moment.duration({s: 22}).asSeconds(), 'python isodate 20');
- assert.equal(moment.duration('PT22.22S').asSeconds(), moment.duration({s: 22.22}).asSeconds(), 'python isodate 21');
- assert.equal(moment.duration('-P2Y').asSeconds(), moment.duration({y: -2}).asSeconds(), 'python isodate 22');
- assert.equal(moment.duration('-P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 23');
- assert.equal(moment.duration('-P1DT2H3M4S').asSeconds(), moment.duration({d: -1, h: -2, m: -3, s: -4}).asSeconds(), 'python isodate 24');
- assert.equal(moment.duration('PT-6H3M').asSeconds(), moment.duration({h: -6, m: 3}).asSeconds(), 'python isodate 25');
- assert.equal(moment.duration('-PT-6H3M').asSeconds(), moment.duration({h: 6, m: -3}).asSeconds(), 'python isodate 26');
- assert.equal(moment.duration('-P-3Y-6M-4DT-12H-30M-5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 27');
- assert.equal(moment.duration('P-3Y-6M-4DT-12H-30M-5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 28');
- assert.equal(moment.duration('-P-2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 29');
- assert.equal(moment.duration('P-2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 30');
- });
- test('ISO 8601 misuse cases', function (assert) {
- assert.equal(moment.duration('P').asSeconds(), 0, 'lonely P');
- assert.equal(moment.duration('PT').asSeconds(), 0, 'just P and T');
- assert.equal(moment.duration('P1H').asSeconds(), 0, 'missing T');
- assert.equal(moment.duration('P1D1Y').asSeconds(), 0, 'out of order');
- assert.equal(moment.duration('PT.5S').asSeconds(), 0.5, 'accept no leading zero for decimal');
- assert.equal(moment.duration('PT1,S').asSeconds(), 1, 'accept trailing decimal separator');
- assert.equal(moment.duration('PT1M0,,5S').asSeconds(), 60, 'extra decimal separators are ignored as 0');
- });
- test('humanize', function (assert) {
- moment.locale('en');
- assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', '44 seconds = a few seconds');
- assert.equal(moment.duration({seconds: 45}).humanize(), 'a minute', '45 seconds = a minute');
- assert.equal(moment.duration({seconds: 89}).humanize(), 'a minute', '89 seconds = a minute');
- assert.equal(moment.duration({seconds: 90}).humanize(), '2 minutes', '90 seconds = 2 minutes');
- assert.equal(moment.duration({minutes: 44}).humanize(), '44 minutes', '44 minutes = 44 minutes');
- assert.equal(moment.duration({minutes: 45}).humanize(), 'an hour', '45 minutes = an hour');
- assert.equal(moment.duration({minutes: 89}).humanize(), 'an hour', '89 minutes = an hour');
- assert.equal(moment.duration({minutes: 90}).humanize(), '2 hours', '90 minutes = 2 hours');
- assert.equal(moment.duration({hours: 5}).humanize(), '5 hours', '5 hours = 5 hours');
- assert.equal(moment.duration({hours: 21}).humanize(), '21 hours', '21 hours = 21 hours');
- assert.equal(moment.duration({hours: 22}).humanize(), 'a day', '22 hours = a day');
- assert.equal(moment.duration({hours: 35}).humanize(), 'a day', '35 hours = a day');
- assert.equal(moment.duration({hours: 36}).humanize(), '2 days', '36 hours = 2 days');
- assert.equal(moment.duration({days: 1}).humanize(), 'a day', '1 day = a day');
- assert.equal(moment.duration({days: 5}).humanize(), '5 days', '5 days = 5 days');
- assert.equal(moment.duration({weeks: 1}).humanize(), '7 days', '1 week = 7 days');
- assert.equal(moment.duration({days: 25}).humanize(), '25 days', '25 days = 25 days');
- assert.equal(moment.duration({days: 26}).humanize(), 'a month', '26 days = a month');
- assert.equal(moment.duration({days: 30}).humanize(), 'a month', '30 days = a month');
- assert.equal(moment.duration({days: 45}).humanize(), 'a month', '45 days = a month');
- assert.equal(moment.duration({days: 46}).humanize(), '2 months', '46 days = 2 months');
- assert.equal(moment.duration({days: 74}).humanize(), '2 months', '74 days = 2 months');
- assert.equal(moment.duration({days: 77}).humanize(), '3 months', '77 days = 3 months');
- assert.equal(moment.duration({months: 1}).humanize(), 'a month', '1 month = a month');
- assert.equal(moment.duration({months: 5}).humanize(), '5 months', '5 months = 5 months');
- assert.equal(moment.duration({days: 344}).humanize(), 'a year', '344 days = a year');
- assert.equal(moment.duration({days: 345}).humanize(), 'a year', '345 days = a year');
- assert.equal(moment.duration({days: 547}).humanize(), 'a year', '547 days = a year');
- assert.equal(moment.duration({days: 548}).humanize(), '2 years', '548 days = 2 years');
- assert.equal(moment.duration({years: 1}).humanize(), 'a year', '1 year = a year');
- assert.equal(moment.duration({years: 5}).humanize(), '5 years', '5 years = 5 years');
- assert.equal(moment.duration(7200000).humanize(), '2 hours', '7200000 = 2 minutes');
- });
- test('humanize duration with suffix', function (assert) {
- moment.locale('en');
- assert.equal(moment.duration({seconds: 44}).humanize(true), 'in a few seconds', '44 seconds = a few seconds');
- assert.equal(moment.duration({seconds: -44}).humanize(true), 'a few seconds ago', '44 seconds = a few seconds');
- });
- test('bubble value up', function (assert) {
- assert.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, '61001 milliseconds has 1 millisecond left over');
- assert.equal(moment.duration({milliseconds: 61001}).seconds(), 1, '61001 milliseconds has 1 second left over');
- assert.equal(moment.duration({milliseconds: 61001}).minutes(), 1, '61001 milliseconds has 1 minute left over');
- assert.equal(moment.duration({minutes: 350}).minutes(), 50, '350 minutes has 50 minutes left over');
- assert.equal(moment.duration({minutes: 350}).hours(), 5, '350 minutes has 5 hours left over');
- });
- test('clipping', function (assert) {
- assert.equal(moment.duration({months: 11}).months(), 11, '11 months is 11 months');
- assert.equal(moment.duration({months: 11}).years(), 0, '11 months makes no year');
- assert.equal(moment.duration({months: 12}).months(), 0, '12 months is 0 months left over');
- assert.equal(moment.duration({months: 12}).years(), 1, '12 months makes 1 year');
- assert.equal(moment.duration({months: 13}).months(), 1, '13 months is 1 month left over');
- assert.equal(moment.duration({months: 13}).years(), 1, '13 months makes 1 year');
- assert.equal(moment.duration({days: 30}).days(), 30, '30 days is 30 days');
- assert.equal(moment.duration({days: 30}).months(), 0, '30 days makes no month');
- assert.equal(moment.duration({days: 31}).days(), 0, '31 days is 0 days left over');
- assert.equal(moment.duration({days: 31}).months(), 1, '31 days is a month');
- assert.equal(moment.duration({days: 32}).days(), 1, '32 days is 1 day left over');
- assert.equal(moment.duration({days: 32}).months(), 1, '32 days is a month');
- assert.equal(moment.duration({hours: 23}).hours(), 23, '23 hours is 23 hours');
- assert.equal(moment.duration({hours: 23}).days(), 0, '23 hours makes no day');
- assert.equal(moment.duration({hours: 24}).hours(), 0, '24 hours is 0 hours left over');
- assert.equal(moment.duration({hours: 24}).days(), 1, '24 hours makes 1 day');
- assert.equal(moment.duration({hours: 25}).hours(), 1, '25 hours is 1 hour left over');
- assert.equal(moment.duration({hours: 25}).days(), 1, '25 hours makes 1 day');
- });
- test('bubbling consistency', function (assert) {
- var days = 0, months = 0, newDays, newMonths, totalDays, d;
- for (totalDays = 1; totalDays <= 500; ++totalDays) {
- d = moment.duration(totalDays, 'days');
- newDays = d.days();
- newMonths = d.months() + d.years() * 12;
- assert.ok(
- (months === newMonths && days + 1 === newDays) ||
- (months + 1 === newMonths && newDays === 0),
- 'consistent total days ' + totalDays +
- ' was ' + months + ' ' + days +
- ' now ' + newMonths + ' ' + newDays);
- days = newDays;
- months = newMonths;
- }
- });
- test('effective equivalency', function (assert) {
- assert.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, '1 second is the same as 1000 milliseconds');
- assert.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, '1 minute is the same as 60 seconds');
- assert.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, '1 hour is the same as 60 minutes');
- assert.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, '1 day is the same as 24 hours');
- assert.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, '1 week is the same as 7 days');
- assert.deepEqual(moment.duration({days: 31})._data, moment.duration({months: 1})._data, '1 month is the same as 30 days');
- assert.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, '1 years is the same as 12 months');
- });
- test('asGetters', function (assert) {
- // 400 years have exactly 146097 days
- // years
- assert.equal(moment.duration(1, 'year').asYears(), 1, '1 year as years');
- assert.equal(moment.duration(1, 'year').asMonths(), 12, '1 year as months');
- assert.equal(moment.duration(400, 'year').asMonths(), 4800, '400 years as months');
- assert.equal(moment.duration(1, 'year').asWeeks().toFixed(3), 52.143, '1 year as weeks');
- assert.equal(moment.duration(1, 'year').asDays(), 365, '1 year as days');
- assert.equal(moment.duration(2, 'year').asDays(), 730, '2 years as days');
- assert.equal(moment.duration(3, 'year').asDays(), 1096, '3 years as days');
- assert.equal(moment.duration(4, 'year').asDays(), 1461, '4 years as days');
- assert.equal(moment.duration(400, 'year').asDays(), 146097, '400 years as days');
- assert.equal(moment.duration(1, 'year').asHours(), 8760, '1 year as hours');
- assert.equal(moment.duration(1, 'year').asMinutes(), 525600, '1 year as minutes');
- assert.equal(moment.duration(1, 'year').asSeconds(), 31536000, '1 year as seconds');
- assert.equal(moment.duration(1, 'year').asMilliseconds(), 31536000000, '1 year as milliseconds');
- // months
- assert.equal(moment.duration(1, 'month').asYears().toFixed(4), 0.0833, '1 month as years');
- assert.equal(moment.duration(1, 'month').asMonths(), 1, '1 month as months');
- assert.equal(moment.duration(1, 'month').asWeeks().toFixed(3), 4.286, '1 month as weeks');
- assert.equal(moment.duration(1, 'month').asDays(), 30, '1 month as days');
- assert.equal(moment.duration(2, 'month').asDays(), 61, '2 months as days');
- assert.equal(moment.duration(3, 'month').asDays(), 91, '3 months as days');
- assert.equal(moment.duration(4, 'month').asDays(), 122, '4 months as days');
- assert.equal(moment.duration(5, 'month').asDays(), 152, '5 months as days');
- assert.equal(moment.duration(6, 'month').asDays(), 183, '6 months as days');
- assert.equal(moment.duration(7, 'month').asDays(), 213, '7 months as days');
- assert.equal(moment.duration(8, 'month').asDays(), 243, '8 months as days');
- assert.equal(moment.duration(9, 'month').asDays(), 274, '9 months as days');
- assert.equal(moment.duration(10, 'month').asDays(), 304, '10 months as days');
- assert.equal(moment.duration(11, 'month').asDays(), 335, '11 months as days');
- assert.equal(moment.duration(12, 'month').asDays(), 365, '12 months as days');
- assert.equal(moment.duration(24, 'month').asDays(), 730, '24 months as days');
- assert.equal(moment.duration(36, 'month').asDays(), 1096, '36 months as days');
- assert.equal(moment.duration(48, 'month').asDays(), 1461, '48 months as days');
- assert.equal(moment.duration(4800, 'month').asDays(), 146097, '4800 months as days');
- assert.equal(moment.duration(1, 'month').asHours(), 720, '1 month as hours');
- assert.equal(moment.duration(1, 'month').asMinutes(), 43200, '1 month as minutes');
- assert.equal(moment.duration(1, 'month').asSeconds(), 2592000, '1 month as seconds');
- assert.equal(moment.duration(1, 'month').asMilliseconds(), 2592000000, '1 month as milliseconds');
- // weeks
- assert.equal(moment.duration(1, 'week').asYears().toFixed(4), 0.0192, '1 week as years');
- assert.equal(moment.duration(1, 'week').asMonths().toFixed(3), 0.230, '1 week as months');
- assert.equal(moment.duration(1, 'week').asWeeks(), 1, '1 week as weeks');
- assert.equal(moment.duration(1, 'week').asDays(), 7, '1 week as days');
- assert.equal(moment.duration(1, 'week').asHours(), 168, '1 week as hours');
- assert.equal(moment.duration(1, 'week').asMinutes(), 10080, '1 week as minutes');
- assert.equal(moment.duration(1, 'week').asSeconds(), 604800, '1 week as seconds');
- assert.equal(moment.duration(1, 'week').asMilliseconds(), 604800000, '1 week as milliseconds');
- // days
- assert.equal(moment.duration(1, 'day').asYears().toFixed(4), 0.0027, '1 day as years');
- assert.equal(moment.duration(1, 'day').asMonths().toFixed(3), 0.033, '1 day as months');
- assert.equal(moment.duration(1, 'day').asWeeks().toFixed(3), 0.143, '1 day as weeks');
- assert.equal(moment.duration(1, 'day').asDays(), 1, '1 day as days');
- assert.equal(moment.duration(1, 'day').asHours(), 24, '1 day as hours');
- assert.equal(moment.duration(1, 'day').asMinutes(), 1440, '1 day as minutes');
- assert.equal(moment.duration(1, 'day').asSeconds(), 86400, '1 day as seconds');
- assert.equal(moment.duration(1, 'day').asMilliseconds(), 86400000, '1 day as milliseconds');
- // hours
- assert.equal(moment.duration(1, 'hour').asYears().toFixed(6), 0.000114, '1 hour as years');
- assert.equal(moment.duration(1, 'hour').asMonths().toFixed(5), 0.00137, '1 hour as months');
- assert.equal(moment.duration(1, 'hour').asWeeks().toFixed(5), 0.00595, '1 hour as weeks');
- assert.equal(moment.duration(1, 'hour').asDays().toFixed(4), 0.0417, '1 hour as days');
- assert.equal(moment.duration(1, 'hour').asHours(), 1, '1 hour as hours');
- assert.equal(moment.duration(1, 'hour').asMinutes(), 60, '1 hour as minutes');
- assert.equal(moment.duration(1, 'hour').asSeconds(), 3600, '1 hour as seconds');
- assert.equal(moment.duration(1, 'hour').asMilliseconds(), 3600000, '1 hour as milliseconds');
- // minutes
- assert.equal(moment.duration(1, 'minute').asYears().toFixed(8), 0.00000190, '1 minute as years');
- assert.equal(moment.duration(1, 'minute').asMonths().toFixed(7), 0.0000228, '1 minute as months');
- assert.equal(moment.duration(1, 'minute').asWeeks().toFixed(7), 0.0000992, '1 minute as weeks');
- assert.equal(moment.duration(1, 'minute').asDays().toFixed(6), 0.000694, '1 minute as days');
- assert.equal(moment.duration(1, 'minute').asHours().toFixed(4), 0.0167, '1 minute as hours');
- assert.equal(moment.duration(1, 'minute').asMinutes(), 1, '1 minute as minutes');
- assert.equal(moment.duration(1, 'minute').asSeconds(), 60, '1 minute as seconds');
- assert.equal(moment.duration(1, 'minute').asMilliseconds(), 60000, '1 minute as milliseconds');
- // seconds
- assert.equal(moment.duration(1, 'second').asYears().toFixed(10), 0.0000000317, '1 second as years');
- assert.equal(moment.duration(1, 'second').asMonths().toFixed(9), 0.000000380, '1 second as months');
- assert.equal(moment.duration(1, 'second').asWeeks().toFixed(8), 0.00000165, '1 second as weeks');
- assert.equal(moment.duration(1, 'second').asDays().toFixed(7), 0.0000116, '1 second as days');
- assert.equal(moment.duration(1, 'second').asHours().toFixed(6), 0.000278, '1 second as hours');
- assert.equal(moment.duration(1, 'second').asMinutes().toFixed(4), 0.0167, '1 second as minutes');
- assert.equal(moment.duration(1, 'second').asSeconds(), 1, '1 second as seconds');
- assert.equal(moment.duration(1, 'second').asMilliseconds(), 1000, '1 second as milliseconds');
- // milliseconds
- assert.equal(moment.duration(1, 'millisecond').asYears().toFixed(13), 0.0000000000317, '1 millisecond as years');
- assert.equal(moment.duration(1, 'millisecond').asMonths().toFixed(12), 0.000000000380, '1 millisecond as months');
- assert.equal(moment.duration(1, 'millisecond').asWeeks().toFixed(11), 0.00000000165, '1 millisecond as weeks');
- assert.equal(moment.duration(1, 'millisecond').asDays().toFixed(10), 0.0000000116, '1 millisecond as days');
- assert.equal(moment.duration(1, 'millisecond').asHours().toFixed(9), 0.000000278, '1 millisecond as hours');
- assert.equal(moment.duration(1, 'millisecond').asMinutes().toFixed(7), 0.0000167, '1 millisecond as minutes');
- assert.equal(moment.duration(1, 'millisecond').asSeconds(), 0.001, '1 millisecond as seconds');
- assert.equal(moment.duration(1, 'millisecond').asMilliseconds(), 1, '1 millisecond as milliseconds');
- });
- test('as getters for small units', function (assert) {
- var dS = moment.duration(1, 'milliseconds'),
- ds = moment.duration(3, 'seconds'),
- dm = moment.duration(13, 'minutes');
- // Tests for issue #1867.
- // Floating point errors for small duration units were introduced in version 2.8.0.
- assert.equal(dS.as('milliseconds'), 1, 'as("milliseconds")');
- assert.equal(dS.asMilliseconds(), 1, 'asMilliseconds()');
- assert.equal(ds.as('seconds'), 3, 'as("seconds")');
- assert.equal(ds.asSeconds(), 3, 'asSeconds()');
- assert.equal(dm.as('minutes'), 13, 'as("minutes")');
- assert.equal(dm.asMinutes(), 13, 'asMinutes()');
- });
- test('minutes getter for floating point hours', function (assert) {
- // Tests for issue #2978.
- // For certain floating point hours, .minutes() getter produced incorrect values due to the rounding errors
- assert.equal(moment.duration(2.3, 'h').minutes(), 18, 'minutes()');
- assert.equal(moment.duration(4.1, 'h').minutes(), 6, 'minutes()');
- });
- test('isDuration', function (assert) {
- assert.ok(moment.isDuration(moment.duration(12345678)), 'correctly says true');
- assert.ok(!moment.isDuration(moment()), 'moment object is not a duration');
- assert.ok(!moment.isDuration({milliseconds: 1}), 'plain object is not a duration');
- });
- test('add', function (assert) {
- var d = moment.duration({months: 4, weeks: 3, days: 2});
- // for some reason, d._data._months does not get updated; use d._months instead.
- assert.equal(d.add(1, 'month')._months, 5, 'Add months');
- assert.equal(d.add(5, 'days')._days, 28, 'Add days');
- assert.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds');
- assert.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute');
- });
- test('add and bubble', function (assert) {
- var d;
- assert.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds');
- assert.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes');
- assert.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours');
- assert.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days');
- d = moment.duration(-1, 'day').add(1, 'hour');
- assert.equal(d.hours(), -23, '-1 day + 1 hour == -23 hour (component)');
- assert.equal(d.asHours(), -23, '-1 day + 1 hour == -23 hours');
- d = moment.duration(-1, 'year').add(1, 'day');
- assert.equal(d.days(), -30, '- 1 year + 1 day == -30 days (component)');
- assert.equal(d.months(), -11, '- 1 year + 1 day == -11 months (component)');
- assert.equal(d.years(), 0, '- 1 year + 1 day == 0 years (component)');
- assert.equal(d.asDays(), -364, '- 1 year + 1 day == -364 days');
- d = moment.duration(-1, 'year').add(1, 'hour');
- assert.equal(d.hours(), -23, '- 1 year + 1 hour == -23 hours (component)');
- assert.equal(d.days(), -30, '- 1 year + 1 hour == -30 days (component)');
- assert.equal(d.months(), -11, '- 1 year + 1 hour == -11 months (component)');
- assert.equal(d.years(), 0, '- 1 year + 1 hour == 0 years (component)');
- });
- test('subtract and bubble', function (assert) {
- var d;
- assert.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds');
- assert.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes');
- assert.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours');
- assert.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days');
- d = moment.duration(1, 'day').subtract(1, 'hour');
- assert.equal(d.hours(), 23, '1 day - 1 hour == 23 hour (component)');
- assert.equal(d.asHours(), 23, '1 day - 1 hour == 23 hours');
- d = moment.duration(1, 'year').subtract(1, 'day');
- assert.equal(d.days(), 30, '1 year - 1 day == 30 days (component)');
- assert.equal(d.months(), 11, '1 year - 1 day == 11 months (component)');
- assert.equal(d.years(), 0, '1 year - 1 day == 0 years (component)');
- assert.equal(d.asDays(), 364, '1 year - 1 day == 364 days');
- d = moment.duration(1, 'year').subtract(1, 'hour');
- assert.equal(d.hours(), 23, '1 year - 1 hour == 23 hours (component)');
- assert.equal(d.days(), 30, '1 year - 1 hour == 30 days (component)');
- assert.equal(d.months(), 11, '1 year - 1 hour == 11 months (component)');
- assert.equal(d.years(), 0, '1 year - 1 hour == 0 years (component)');
- });
- test('subtract', function (assert) {
- var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5});
- // for some reason, d._data._months does not get updated; use d._months instead.
- assert.equal(d.subtract(1, 'months')._months, 1, 'Subtract months');
- assert.equal(d.subtract(14, 'days')._days, 0, 'Subtract days');
- assert.equal(d.subtract(10000)._milliseconds, 5 * 60 * 60 * 1000 - 10000, 'Subtract milliseconds');
- assert.equal(d.subtract({h: 1, m: 59})._milliseconds, 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, 'Subtract hour:minute');
- });
- test('JSON.stringify duration', function (assert) {
- var d = moment.duration(1024, 'h');
- assert.equal(JSON.stringify(d), '"' + d.toISOString() + '"', 'JSON.stringify on duration should return ISO string');
- });
- test('duration plugins', function (assert) {
- var durationObject = moment.duration();
- moment.duration.fn.foo = function (arg) {
- assert.equal(this, durationObject);
- assert.equal(arg, 5);
- };
- durationObject.foo(5);
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('duration from moments');
- test('pure year diff', function (assert) {
- var m1 = moment('2012-01-01T00:00:00.000Z'),
- m2 = moment('2013-01-01T00:00:00.000Z');
- assert.equal(moment.duration({from: m1, to: m2}).as('years'), 1, 'year moment difference');
- assert.equal(moment.duration({from: m2, to: m1}).as('years'), -1, 'negative year moment difference');
- });
- test('month and day diff', function (assert) {
- var m1 = moment('2012-01-15T00:00:00.000Z'),
- m2 = moment('2012-02-17T00:00:00.000Z'),
- d = moment.duration({from: m1, to: m2});
- assert.equal(d.get('days'), 2);
- assert.equal(d.get('months'), 1);
- });
- test('day diff, separate months', function (assert) {
- var m1 = moment('2012-01-15T00:00:00.000Z'),
- m2 = moment('2012-02-13T00:00:00.000Z'),
- d = moment.duration({from: m1, to: m2});
- assert.equal(d.as('days'), 29);
- });
- test('hour diff', function (assert) {
- var m1 = moment('2012-01-15T17:00:00.000Z'),
- m2 = moment('2012-01-16T03:00:00.000Z'),
- d = moment.duration({from: m1, to: m2});
- assert.equal(d.as('hours'), 10);
- });
- test('minute diff', function (assert) {
- var m1 = moment('2012-01-15T17:45:00.000Z'),
- m2 = moment('2012-01-16T03:15:00.000Z'),
- d = moment.duration({from: m1, to: m2});
- assert.equal(d.as('hours'), 9.5);
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('invalid');
- test('invalid duration', function (assert) {
- var m = moment.duration.invalid(); // should be invalid
- assert.equal(m.isValid(), false);
- assert.ok(isNaN(m.valueOf()));
- });
- test('valid duration', function (assert) {
- var m = moment.duration({d: null}); // should be valid, for now
- assert.equal(m.isValid(), true);
- assert.equal(m.valueOf(), 0);
- });
- test('invalid duration - only smallest unit can have decimal', function (assert) {
- var m = moment.duration({'days': 3.5, 'hours': 1.1}); // should be invalid
- assert.equal(m.isValid(), false);
- assert.ok(isNaN(m.valueOf())); // .valueOf() returns NaN for invalid durations
- });
- test('valid duration - smallest unit can have decimal', function (assert) {
- var m = moment.duration({'days': 3, 'hours': 1.1}); // should be valid
- assert.equal(m.isValid(), true);
- assert.equal(m.asHours(), 73.1);
- });
- test('invalid duration with two arguments', function (assert) {
- var m = moment.duration(NaN, 'days');
- assert.equal(m.isValid(), false);
- assert.ok(isNaN(m.valueOf()));
- });
- test('invalid duration operations', function (assert) {
- var invalids = [
- moment.duration(NaN),
- moment.duration(NaN, 'days'),
- moment.duration.invalid()
- ],
- i,
- invalid,
- valid = moment.duration();
- for (i = 0; i < invalids.length; ++i) {
- invalid = invalids[i];
- assert.ok(!invalid.add(5, 'hours').isValid(), 'invalid.add is invalid; i=' + i);
- assert.ok(!invalid.subtract(30, 'days').isValid(), 'invalid.subtract is invalid; i=' + i);
- assert.ok(!invalid.abs().isValid(), 'invalid.abs is invalid; i=' + i);
- assert.ok(isNaN(invalid.as('years')), 'invalid.as is NaN; i=' + i);
- assert.ok(isNaN(invalid.asMilliseconds()), 'invalid.asMilliseconds is NaN; i=' + i);
- assert.ok(isNaN(invalid.asSeconds()), 'invalid.asSeconds is NaN; i=' + i);
- assert.ok(isNaN(invalid.asMinutes()), 'invalid.asMinutes is NaN; i=' + i);
- assert.ok(isNaN(invalid.asHours()), 'invalid.asHours is NaN; i=' + i);
- assert.ok(isNaN(invalid.asDays()), 'invalid.asDays is NaN; i=' + i);
- assert.ok(isNaN(invalid.asWeeks()), 'invalid.asWeeks is NaN; i=' + i);
- assert.ok(isNaN(invalid.asMonths()), 'invalid.asMonths is NaN; i=' + i);
- assert.ok(isNaN(invalid.asYears()), 'invalid.asYears is NaN; i=' + i);
- assert.ok(isNaN(invalid.valueOf()), 'invalid.valueOf is NaN; i=' + i);
- assert.ok(isNaN(invalid.get('hours')), 'invalid.get is NaN; i=' + i);
- assert.ok(isNaN(invalid.milliseconds()), 'invalid.milliseconds is NaN; i=' + i);
- assert.ok(isNaN(invalid.seconds()), 'invalid.seconds is NaN; i=' + i);
- assert.ok(isNaN(invalid.minutes()), 'invalid.minutes is NaN; i=' + i);
- assert.ok(isNaN(invalid.hours()), 'invalid.hours is NaN; i=' + i);
- assert.ok(isNaN(invalid.days()), 'invalid.days is NaN; i=' + i);
- assert.ok(isNaN(invalid.weeks()), 'invalid.weeks is NaN; i=' + i);
- assert.ok(isNaN(invalid.months()), 'invalid.months is NaN; i=' + i);
- assert.ok(isNaN(invalid.years()), 'invalid.years is NaN; i=' + i);
- assert.equal(invalid.humanize(),
- invalid.localeData().invalidDate(),
- 'invalid.humanize is localized invalid duration string; i=' + i);
- assert.equal(invalid.toISOString(),
- invalid.localeData().invalidDate(),
- 'invalid.toISOString is localized invalid duration string; i=' + i);
- assert.equal(invalid.toString(),
- invalid.localeData().invalidDate(),
- 'invalid.toString is localized invalid duration string; i=' + i);
- assert.equal(invalid.toJSON(), invalid.localeData().invalidDate(), 'invalid.toJSON is null; i=' + i);
- assert.equal(invalid.locale(), 'en', 'invalid.locale; i=' + i);
- assert.equal(invalid.localeData()._abbr, 'en', 'invalid.localeData()._abbr; i=' + i);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('format');
- test('format YY', function (assert) {
- var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125));
- assert.equal(b.format('YY'), '09', 'YY ---> 09');
- });
- test('format escape brackets', function (assert) {
- moment.locale('en');
- var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125));
- assert.equal(b.format('[day]'), 'day', 'Single bracket');
- assert.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket');
- assert.equal(b.format('[YY'), '[09', 'Un-ended bracket');
- assert.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets');
- assert.equal(b.format('[[]'), '[', 'Escape open bracket');
- assert.equal(b.format('[Last]'), 'Last', 'localized tokens');
- assert.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens');
- assert.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens');
- assert.equal(b.format('[LLL] LLL'), 'LLL February 14, 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)');
- assert.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines');
- });
- test('handle negative years', function (assert) {
- moment.locale('en');
- assert.equal(moment.utc().year(-1).format('YY'), '-01', 'YY with negative year');
- assert.equal(moment.utc().year(-1).format('YYYY'), '-0001', 'YYYY with negative year');
- assert.equal(moment.utc().year(-12).format('YY'), '-12', 'YY with negative year');
- assert.equal(moment.utc().year(-12).format('YYYY'), '-0012', 'YYYY with negative year');
- assert.equal(moment.utc().year(-123).format('YY'), '-23', 'YY with negative year');
- assert.equal(moment.utc().year(-123).format('YYYY'), '-0123', 'YYYY with negative year');
- assert.equal(moment.utc().year(-1234).format('YY'), '-34', 'YY with negative year');
- assert.equal(moment.utc().year(-1234).format('YYYY'), '-1234', 'YYYY with negative year');
- assert.equal(moment.utc().year(-12345).format('YY'), '-45', 'YY with negative year');
- assert.equal(moment.utc().year(-12345).format('YYYY'), '-12345', 'YYYY with negative year');
- });
- test('format milliseconds', function (assert) {
- var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123));
- assert.equal(b.format('S'), '1', 'Deciseconds');
- assert.equal(b.format('SS'), '12', 'Centiseconds');
- assert.equal(b.format('SSS'), '123', 'Milliseconds');
- b.milliseconds(789);
- assert.equal(b.format('S'), '7', 'Deciseconds');
- assert.equal(b.format('SS'), '78', 'Centiseconds');
- assert.equal(b.format('SSS'), '789', 'Milliseconds');
- });
- test('format timezone', function (assert) {
- var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125));
- assert.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like \'+07:30\'');
- assert.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like \'+0700\'');
- });
- test('format multiple with utc offset', function (assert) {
- var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']);
- assert.equal(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats');
- });
- test('isDST', function (assert) {
- var janOffset = new Date(2011, 0, 1).getTimezoneOffset(),
- julOffset = new Date(2011, 6, 1).getTimezoneOffset(),
- janIsDst = janOffset < julOffset,
- julIsDst = julOffset < janOffset,
- jan1 = moment([2011]),
- jul1 = moment([2011, 6]);
- if (janIsDst && julIsDst) {
- assert.ok(0, 'January and July cannot both be in DST');
- assert.ok(0, 'January and July cannot both be in DST');
- } else if (janIsDst) {
- assert.ok(jan1.isDST(), 'January 1 is DST');
- assert.ok(!jul1.isDST(), 'July 1 is not DST');
- } else if (julIsDst) {
- assert.ok(!jan1.isDST(), 'January 1 is not DST');
- assert.ok(jul1.isDST(), 'July 1 is DST');
- } else {
- assert.ok(!jan1.isDST(), 'January 1 is not DST');
- assert.ok(!jul1.isDST(), 'July 1 is not DST');
- }
- });
- test('unix timestamp', function (assert) {
- var m = moment('1234567890.123', 'X');
- assert.equal(m.format('X'), '1234567890', 'unix timestamp without milliseconds');
- assert.equal(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds');
- assert.equal(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds');
- assert.equal(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds');
- m = moment(1234567890.123, 'X');
- assert.equal(m.format('X'), '1234567890', 'unix timestamp as integer');
- });
- test('unix offset milliseconds', function (assert) {
- var m = moment('1234567890123', 'x');
- assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds');
- m = moment(1234567890123, 'x');
- assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds as integer');
- });
- test('utcOffset sanity checks', function (assert) {
- assert.equal(moment().utcOffset() % 15, 0,
- 'utc offset should be a multiple of 15 (was ' + moment().utcOffset() + ')');
- assert.equal(moment().utcOffset(), -(new Date()).getTimezoneOffset(),
- 'utcOffset should return the opposite of getTimezoneOffset');
- });
- test('default format', function (assert) {
- var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/;
- assert.ok(isoRegex.exec(moment().format()), 'default format (' + moment().format() + ') should match ISO');
- });
- test('default UTC format', function (assert) {
- var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\dZ/;
- assert.ok(isoRegex.exec(moment.utc().format()), 'default UTC format (' + moment.utc().format() + ') should match ISO');
- });
- test('toJSON', function (assert) {
- var supportsJson = typeof JSON !== 'undefined' && JSON.stringify && JSON.stringify.call,
- date = moment('2012-10-09T21:30:40.678+0100');
- assert.equal(date.toJSON(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toJSON');
- if (supportsJson) {
- assert.equal(JSON.stringify({
- date : date
- }), '{"date":"2012-10-09T20:30:40.678Z"}', 'should output ISO8601 on JSON.stringify');
- }
- });
- test('toISOString', function (assert) {
- var date = moment.utc('2012-10-09T20:30:40.678');
- assert.equal(date.toISOString(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toISOString');
- // big years
- date = moment.utc('+020123-10-09T20:30:40.678');
- assert.equal(date.toISOString(), '+020123-10-09T20:30:40.678Z', 'ISO8601 format on big positive year');
- // negative years
- date = moment.utc('-000001-10-09T20:30:40.678');
- assert.equal(date.toISOString(), '-000001-10-09T20:30:40.678Z', 'ISO8601 format on negative year');
- // big negative years
- date = moment.utc('-020123-10-09T20:30:40.678');
- assert.equal(date.toISOString(), '-020123-10-09T20:30:40.678Z', 'ISO8601 format on big negative year');
- //invalid dates
- date = moment.utc('2017-12-32');
- assert.equal(date.toISOString(), null, 'An invalid date to iso string is null');
- });
- // See https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
- test('inspect', function (assert) {
- function roundtrip(m) {
- /*jshint evil:true */
- return (new Function('moment', 'return ' + m.inspect()))(moment);
- }
- function testInspect(date, string) {
- var inspected = date.inspect();
- assert.equal(inspected, string);
- assert.ok(date.isSame(roundtrip(date)), 'Tried to parse ' + inspected);
- }
- testInspect(
- moment('2012-10-09T20:30:40.678'),
- 'moment("2012-10-09T20:30:40.678")'
- );
- testInspect(
- moment('+020123-10-09T20:30:40.678'),
- 'moment("+020123-10-09T20:30:40.678")'
- );
- testInspect(
- moment.utc('2012-10-09T20:30:40.678'),
- 'moment.utc("2012-10-09T20:30:40.678+00:00")'
- );
- testInspect(
- moment.utc('+020123-10-09T20:30:40.678'),
- 'moment.utc("+020123-10-09T20:30:40.678+00:00")'
- );
- testInspect(
- moment.utc('+020123-10-09T20:30:40.678+01:00'),
- 'moment.utc("+020123-10-09T19:30:40.678+00:00")'
- );
- testInspect(
- moment.parseZone('2016-06-11T17:30:40.678+0430'),
- 'moment.parseZone("2016-06-11T17:30:40.678+04:30")'
- );
- testInspect(
- moment.parseZone('+112016-06-11T17:30:40.678+0430'),
- 'moment.parseZone("+112016-06-11T17:30:40.678+04:30")'
- );
- assert.equal(
- moment(new Date('nope')).inspect(),
- 'moment.invalid(/* Invalid Date */)'
- );
- assert.equal(
- moment('blah', 'YYYY').inspect(),
- 'moment.invalid(/* blah */)'
- );
- });
- test('long years', function (assert) {
- assert.equal(moment.utc().year(2).format('YYYYYY'), '+000002', 'small year with YYYYYY');
- assert.equal(moment.utc().year(2012).format('YYYYYY'), '+002012', 'regular year with YYYYYY');
- assert.equal(moment.utc().year(20123).format('YYYYYY'), '+020123', 'big year with YYYYYY');
- assert.equal(moment.utc().year(-1).format('YYYYYY'), '-000001', 'small negative year with YYYYYY');
- assert.equal(moment.utc().year(-2012).format('YYYYYY'), '-002012', 'negative year with YYYYYY');
- assert.equal(moment.utc().year(-20123).format('YYYYYY'), '-020123', 'big negative year with YYYYYY');
- });
- test('toISOString() when 0 year', function (assert) {
- // https://github.com/moment/moment/issues/3765
- var date = moment('0000-01-01T21:00:00.000Z');
- assert.equal(date.toISOString(), '0000-01-01T21:00:00.000Z');
- assert.equal(date.toDate().toISOString(), '0000-01-01T21:00:00.000Z');
- });
- test('iso week formats', function (assert) {
- // https://en.wikipedia.org/wiki/ISO_week_date
- var cases = {
- '2005-01-02': '2004-53',
- '2005-12-31': '2005-52',
- '2007-01-01': '2007-01',
- '2007-12-30': '2007-52',
- '2007-12-31': '2008-01',
- '2008-01-01': '2008-01',
- '2008-12-28': '2008-52',
- '2008-12-29': '2009-01',
- '2008-12-30': '2009-01',
- '2008-12-31': '2009-01',
- '2009-01-01': '2009-01',
- '2009-12-31': '2009-53',
- '2010-01-01': '2009-53',
- '2010-01-02': '2009-53',
- '2010-01-03': '2009-53',
- '404-12-31': '0404-53',
- '405-12-31': '0405-52'
- }, i, isoWeek, formatted2, formatted1;
- for (i in cases) {
- isoWeek = cases[i].split('-').pop();
- formatted2 = moment(i, 'YYYY-MM-DD').format('WW');
- assert.equal(isoWeek, formatted2, i + ': WW should be ' + isoWeek + ', but ' + formatted2);
- isoWeek = isoWeek.replace(/^0+/, '');
- formatted1 = moment(i, 'YYYY-MM-DD').format('W');
- assert.equal(isoWeek, formatted1, i + ': W should be ' + isoWeek + ', but ' + formatted1);
- }
- });
- test('iso week year formats', function (assert) {
- // https://en.wikipedia.org/wiki/ISO_week_date
- var cases = {
- '2005-01-02': '2004-53',
- '2005-12-31': '2005-52',
- '2007-01-01': '2007-01',
- '2007-12-30': '2007-52',
- '2007-12-31': '2008-01',
- '2008-01-01': '2008-01',
- '2008-12-28': '2008-52',
- '2008-12-29': '2009-01',
- '2008-12-30': '2009-01',
- '2008-12-31': '2009-01',
- '2009-01-01': '2009-01',
- '2009-12-31': '2009-53',
- '2010-01-01': '2009-53',
- '2010-01-02': '2009-53',
- '2010-01-03': '2009-53',
- '404-12-31': '0404-53',
- '405-12-31': '0405-52'
- }, i, isoWeekYear, formatted5, formatted4, formatted2;
- for (i in cases) {
- isoWeekYear = cases[i].split('-')[0];
- formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG');
- assert.equal('0' + isoWeekYear, formatted5, i + ': GGGGG should be ' + isoWeekYear + ', but ' + formatted5);
- formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG');
- assert.equal(isoWeekYear, formatted4, i + ': GGGG should be ' + isoWeekYear + ', but ' + formatted4);
- formatted2 = moment(i, 'YYYY-MM-DD').format('GG');
- assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': GG should be ' + isoWeekYear + ', but ' + formatted2);
- }
- });
- test('week year formats', function (assert) {
- // https://en.wikipedia.org/wiki/ISO_week_date
- var cases = {
- '2005-01-02': '2004-53',
- '2005-12-31': '2005-52',
- '2007-01-01': '2007-01',
- '2007-12-30': '2007-52',
- '2007-12-31': '2008-01',
- '2008-01-01': '2008-01',
- '2008-12-28': '2008-52',
- '2008-12-29': '2009-01',
- '2008-12-30': '2009-01',
- '2008-12-31': '2009-01',
- '2009-01-01': '2009-01',
- '2009-12-31': '2009-53',
- '2010-01-01': '2009-53',
- '2010-01-02': '2009-53',
- '2010-01-03': '2009-53',
- '404-12-31': '0404-53',
- '405-12-31': '0405-52'
- }, i, isoWeekYear, formatted5, formatted4, formatted2;
- moment.defineLocale('dow:1,doy:4', {week: {dow: 1, doy: 4}});
- for (i in cases) {
- isoWeekYear = cases[i].split('-')[0];
- formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg');
- assert.equal('0' + isoWeekYear, formatted5, i + ': ggggg should be ' + isoWeekYear + ', but ' + formatted5);
- formatted4 = moment(i, 'YYYY-MM-DD').format('gggg');
- assert.equal(isoWeekYear, formatted4, i + ': gggg should be ' + isoWeekYear + ', but ' + formatted4);
- formatted2 = moment(i, 'YYYY-MM-DD').format('gg');
- assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': gg should be ' + isoWeekYear + ', but ' + formatted2);
- }
- moment.defineLocale('dow:1,doy:4', null);
- });
- test('iso weekday formats', function (assert) {
- assert.equal(moment([1985, 1, 4]).format('E'), '1', 'Feb 4 1985 is Monday -- 1st day');
- assert.equal(moment([2029, 8, 18]).format('E'), '2', 'Sep 18 2029 is Tuesday -- 2nd day');
- assert.equal(moment([2013, 3, 24]).format('E'), '3', 'Apr 24 2013 is Wednesday -- 3rd day');
- assert.equal(moment([2015, 2, 5]).format('E'), '4', 'Mar 5 2015 is Thursday -- 4th day');
- assert.equal(moment([1970, 0, 2]).format('E'), '5', 'Jan 2 1970 is Friday -- 5th day');
- assert.equal(moment([2001, 4, 12]).format('E'), '6', 'May 12 2001 is Saturday -- 6th day');
- assert.equal(moment([2000, 0, 2]).format('E'), '7', 'Jan 2 2000 is Sunday -- 7th day');
- });
- test('weekday formats', function (assert) {
- moment.defineLocale('dow: 3,doy: 5', {week: {dow: 3, doy: 5}});
- assert.equal(moment([1985, 1, 6]).format('e'), '0', 'Feb 6 1985 is Wednesday -- 0th day');
- assert.equal(moment([2029, 8, 20]).format('e'), '1', 'Sep 20 2029 is Thursday -- 1st day');
- assert.equal(moment([2013, 3, 26]).format('e'), '2', 'Apr 26 2013 is Friday -- 2nd day');
- assert.equal(moment([2015, 2, 7]).format('e'), '3', 'Mar 7 2015 is Saturday -- 3nd day');
- assert.equal(moment([1970, 0, 4]).format('e'), '4', 'Jan 4 1970 is Sunday -- 4th day');
- assert.equal(moment([2001, 4, 14]).format('e'), '5', 'May 14 2001 is Monday -- 5th day');
- assert.equal(moment([2000, 0, 4]).format('e'), '6', 'Jan 4 2000 is Tuesday -- 6th day');
- moment.defineLocale('dow: 3,doy: 5', null);
- });
- test('toString is just human readable format', function (assert) {
- var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125));
- assert.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'));
- });
- test('toJSON skips postformat', function (assert) {
- moment.defineLocale('postformat', {
- postformat: function (s) {
- s.replace(/./g, 'X');
- }
- });
- assert.equal(moment.utc([2000, 0, 1]).toJSON(), '2000-01-01T00:00:00.000Z', 'toJSON doesn\'t postformat');
- moment.defineLocale('postformat', null);
- });
- test('calendar day timezone', function (assert) {
- moment.locale('en');
- var zones = [60, -60, 90, -90, 360, -360, 720, -720],
- b = moment().utc().startOf('day').subtract({m : 1}),
- c = moment().local().startOf('day').subtract({m : 1}),
- d = moment().local().startOf('day').subtract({d : 2}),
- i, z, a;
- for (i = 0; i < zones.length; ++i) {
- z = zones[i];
- a = moment().utcOffset(z).startOf('day').subtract({m: 1});
- assert.equal(moment(a).utcOffset(z).calendar(), 'Yesterday at 11:59 PM',
- 'Yesterday at 11:59 PM, not Today, or the wrong time, tz = ' + z);
- }
- assert.equal(moment(b).utc().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time');
- assert.equal(moment(c).local().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time');
- assert.equal(moment(c).local().calendar(d), 'Tomorrow at 11:59 PM', 'Tomorrow at 11:59 PM, not Yesterday, or the wrong time');
- });
- test('calendar with custom formats', function (assert) {
- assert.equal(moment().calendar(null, {sameDay: '[Today]'}), 'Today', 'Today');
- assert.equal(moment().add(1, 'days').calendar(null, {nextDay: '[Tomorrow]'}), 'Tomorrow', 'Tomorrow');
- assert.equal(moment([1985, 1, 4]).calendar(null, {sameElse: 'YYYY-MM-DD'}), '1985-02-04', 'Else');
- });
- test('invalid', function (assert) {
- assert.equal(moment.invalid().format(), 'Invalid date');
- assert.equal(moment.invalid().format('YYYY-MM-DD'), 'Invalid date');
- });
- test('quarter formats', function (assert) {
- assert.equal(moment([1985, 1, 4]).format('Q'), '1', 'Feb 4 1985 is Q1');
- assert.equal(moment([2029, 8, 18]).format('Q'), '3', 'Sep 18 2029 is Q3');
- assert.equal(moment([2013, 3, 24]).format('Q'), '2', 'Apr 24 2013 is Q2');
- assert.equal(moment([2015, 2, 5]).format('Q'), '1', 'Mar 5 2015 is Q1');
- assert.equal(moment([1970, 0, 2]).format('Q'), '1', 'Jan 2 1970 is Q1');
- assert.equal(moment([2001, 11, 12]).format('Q'), '4', 'Dec 12 2001 is Q4');
- assert.equal(moment([2000, 0, 2]).format('[Q]Q-YYYY'), 'Q1-2000', 'Jan 2 2000 is Q1');
- });
- test('quarter ordinal formats', function (assert) {
- assert.equal(moment([1985, 1, 4]).format('Qo'), '1st', 'Feb 4 1985 is 1st quarter');
- assert.equal(moment([2029, 8, 18]).format('Qo'), '3rd', 'Sep 18 2029 is 3rd quarter');
- assert.equal(moment([2013, 3, 24]).format('Qo'), '2nd', 'Apr 24 2013 is 2nd quarter');
- assert.equal(moment([2015, 2, 5]).format('Qo'), '1st', 'Mar 5 2015 is 1st quarter');
- assert.equal(moment([1970, 0, 2]).format('Qo'), '1st', 'Jan 2 1970 is 1st quarter');
- assert.equal(moment([2001, 11, 12]).format('Qo'), '4th', 'Dec 12 2001 is 4th quarter');
- assert.equal(moment([2000, 0, 2]).format('Qo [quarter] YYYY'), '1st quarter 2000', 'Jan 2 2000 is 1st quarter');
- });
- // test('full expanded format is returned from abbreviated formats', function (assert) {
- // function objectKeys(obj) {
- // if (Object.keys) {
- // return Object.keys(obj);
- // } else {
- // // IE8
- // var res = [], i;
- // for (i in obj) {
- // if (obj.hasOwnProperty(i)) {
- // res.push(i);
- // }
- // }
- // return res;
- // }
- // }
- // var locales =
- // 'ar-sa ar-tn ar az be bg bn bo br bs ca cs cv cy da de-at de dv el ' +
- // 'en-au en-ca en-gb en-ie en-nz eo es et eu fa fi fo fr-ca fr-ch fr fy ' +
- // 'gd gl he hi hr hu hy-am id is it ja jv ka kk km ko lb lo lt lv me mk ml ' +
- // 'mr ms-my ms my nb ne nl nn pl pt-br pt ro ru se si sk sl sq sr-cyrl ' +
- // 'sr sv sw ta te th tl-ph tlh tr tzl tzm-latn tzm uk uz vi zh-cn zh-tw';
- // each(locales.split(' '), function (locale) {
- // var data, tokens;
- // data = moment().locale(locale).localeData()._longDateFormat;
- // tokens = objectKeys(data);
- // each(tokens, function (token) {
- // // Check each format string to make sure it does not contain any
- // // tokens that need to be expanded.
- // each(tokens, function (i) {
- // // strip escaped sequences
- // var format = data[i].replace(/(\[[^\]]*\])/g, '');
- // assert.equal(false, !!~format.indexOf(token), 'locale ' + locale + ' contains ' + token + ' in ' + i);
- // });
- // });
- // });
- // });
- test('milliseconds', function (assert) {
- var m = moment('123', 'SSS');
- assert.equal(m.format('S'), '1');
- assert.equal(m.format('SS'), '12');
- assert.equal(m.format('SSS'), '123');
- assert.equal(m.format('SSSS'), '1230');
- assert.equal(m.format('SSSSS'), '12300');
- assert.equal(m.format('SSSSSS'), '123000');
- assert.equal(m.format('SSSSSSS'), '1230000');
- assert.equal(m.format('SSSSSSSS'), '12300000');
- assert.equal(m.format('SSSSSSSSS'), '123000000');
- });
- test('hmm and hmmss', function (assert) {
- assert.equal(moment('12:34:56', 'HH:mm:ss').format('hmm'), '1234');
- assert.equal(moment('01:34:56', 'HH:mm:ss').format('hmm'), '134');
- assert.equal(moment('13:34:56', 'HH:mm:ss').format('hmm'), '134');
- assert.equal(moment('12:34:56', 'HH:mm:ss').format('hmmss'), '123456');
- assert.equal(moment('01:34:56', 'HH:mm:ss').format('hmmss'), '13456');
- assert.equal(moment('13:34:56', 'HH:mm:ss').format('hmmss'), '13456');
- });
- test('Hmm and Hmmss', function (assert) {
- assert.equal(moment('12:34:56', 'HH:mm:ss').format('Hmm'), '1234');
- assert.equal(moment('01:34:56', 'HH:mm:ss').format('Hmm'), '134');
- assert.equal(moment('13:34:56', 'HH:mm:ss').format('Hmm'), '1334');
- assert.equal(moment('12:34:56', 'HH:mm:ss').format('Hmmss'), '123456');
- assert.equal(moment('01:34:56', 'HH:mm:ss').format('Hmmss'), '13456');
- assert.equal(moment('08:34:56', 'HH:mm:ss').format('Hmmss'), '83456');
- assert.equal(moment('18:34:56', 'HH:mm:ss').format('Hmmss'), '183456');
- });
- test('k and kk', function (assert) {
- assert.equal(moment('01:23:45', 'HH:mm:ss').format('k'), '1');
- assert.equal(moment('12:34:56', 'HH:mm:ss').format('k'), '12');
- assert.equal(moment('01:23:45', 'HH:mm:ss').format('kk'), '01');
- assert.equal(moment('12:34:56', 'HH:mm:ss').format('kk'), '12');
- assert.equal(moment('00:34:56', 'HH:mm:ss').format('kk'), '24');
- assert.equal(moment('00:00:00', 'HH:mm:ss').format('kk'), '24');
- });
- test('Y token', function (assert) {
- assert.equal(moment('2010-01-01', 'YYYY-MM-DD', true).format('Y'), '2010', 'format 2010 with Y');
- assert.equal(moment('-123-01-01', 'Y-MM-DD', true).format('Y'), '-123', 'format -123 with Y');
- assert.equal(moment('12345-01-01', 'Y-MM-DD', true).format('Y'), '+12345', 'format 12345 with Y');
- assert.equal(moment('0-01-01', 'Y-MM-DD', true).format('Y'), '0', 'format 0 with Y');
- assert.equal(moment('1-01-01', 'Y-MM-DD', true).format('Y'), '1', 'format 1 with Y');
- assert.equal(moment('9999-01-01', 'Y-MM-DD', true).format('Y'), '9999', 'format 9999 with Y');
- assert.equal(moment('10000-01-01', 'Y-MM-DD', true).format('Y'), '+10000', 'format 10000 with Y');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('from_to');
- test('from', function (assert) {
- var start = moment();
- moment.locale('en');
- assert.equal(start.from(start.clone().add(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago');
- assert.equal(start.from(start.clone().add(1, 'minute')), 'a minute ago', '1 minute = a minute ago');
- assert.equal(start.from(start.clone().add(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago');
- assert.equal(start.from(start.clone().subtract(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds');
- assert.equal(start.from(start.clone().subtract(1, 'minute')), 'in a minute', '1 minute = in a minute');
- assert.equal(start.from(start.clone().subtract(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes');
- });
- test('from with absolute duration', function (assert) {
- var start = moment();
- moment.locale('en');
- assert.equal(start.from(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds');
- assert.equal(start.from(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute');
- assert.equal(start.from(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes');
- assert.equal(start.from(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds');
- assert.equal(start.from(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute');
- assert.equal(start.from(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes');
- });
- test('to', function (assert) {
- var start = moment();
- moment.locale('en');
- assert.equal(start.to(start.clone().subtract(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago');
- assert.equal(start.to(start.clone().subtract(1, 'minute')), 'a minute ago', '1 minute = a minute ago');
- assert.equal(start.to(start.clone().subtract(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago');
- assert.equal(start.to(start.clone().add(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds');
- assert.equal(start.to(start.clone().add(1, 'minute')), 'in a minute', '1 minute = in a minute');
- assert.equal(start.to(start.clone().add(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes');
- });
- test('to with absolute duration', function (assert) {
- var start = moment();
- moment.locale('en');
- assert.equal(start.to(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds');
- assert.equal(start.to(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute');
- assert.equal(start.to(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes');
- assert.equal(start.to(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds');
- assert.equal(start.to(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute');
- assert.equal(start.to(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('getters and setters');
- test('getters', function (assert) {
- var a = moment([2011, 9, 12, 6, 7, 8, 9]);
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hours(), 6, 'hour');
- assert.equal(a.minutes(), 7, 'minute');
- assert.equal(a.seconds(), 8, 'second');
- assert.equal(a.milliseconds(), 9, 'milliseconds');
- });
- test('getters programmatic', function (assert) {
- var a = moment([2011, 9, 12, 6, 7, 8, 9]);
- assert.equal(a.get('year'), 2011, 'year');
- assert.equal(a.get('month'), 9, 'month');
- assert.equal(a.get('date'), 12, 'date');
- assert.equal(a.get('day'), 3, 'day');
- assert.equal(a.get('hour'), 6, 'hour');
- assert.equal(a.get('minute'), 7, 'minute');
- assert.equal(a.get('second'), 8, 'second');
- assert.equal(a.get('milliseconds'), 9, 'milliseconds');
- //actual getters tested elsewhere
- assert.equal(a.get('weekday'), a.weekday(), 'weekday');
- assert.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday');
- assert.equal(a.get('week'), a.week(), 'week');
- assert.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek');
- assert.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear');
- //getter no longer sets values when passed an object
- assert.equal(moment([2016,0,1]).get({year:2015}).year(), 2016, 'getter no longer sets values when passed an object');
- });
- test('setters plural', function (assert) {
- var a = moment();
- test.expectedDeprecations('years accessor', 'months accessor', 'dates accessor');
- a.years(2011);
- a.months(9);
- a.dates(12);
- a.hours(6);
- a.minutes(7);
- a.seconds(8);
- a.milliseconds(9);
- assert.equal(a.years(), 2011, 'years');
- assert.equal(a.months(), 9, 'months');
- assert.equal(a.dates(), 12, 'dates');
- assert.equal(a.days(), 3, 'days');
- assert.equal(a.hours(), 6, 'hours');
- assert.equal(a.minutes(), 7, 'minutes');
- assert.equal(a.seconds(), 8, 'seconds');
- assert.equal(a.milliseconds(), 9, 'milliseconds');
- });
- test('setters singular', function (assert) {
- var a = moment();
- a.year(2011);
- a.month(9);
- a.date(12);
- a.hour(6);
- a.minute(7);
- a.second(8);
- a.millisecond(9);
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hour(), 6, 'hour');
- assert.equal(a.minute(), 7, 'minute');
- assert.equal(a.second(), 8, 'second');
- assert.equal(a.millisecond(), 9, 'milliseconds');
- });
- test('setters', 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(9);
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hours(), 6, 'hour');
- assert.equal(a.minutes(), 7, 'minute');
- assert.equal(a.seconds(), 8, 'second');
- assert.equal(a.milliseconds(), 9, 'milliseconds');
- // Test month() behavior. See https://github.com/timrwood/moment/pull/822
- a = moment('20130531', 'YYYYMMDD');
- a.month(3);
- assert.equal(a.month(), 3, 'month edge case');
- });
- test('setter programmatic', function (assert) {
- var a = moment();
- a.set('year', 2011);
- a.set('month', 9);
- a.set('date', 12);
- a.set('hours', 6);
- a.set('minutes', 7);
- a.set('seconds', 8);
- a.set('milliseconds', 9);
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hours(), 6, 'hour');
- assert.equal(a.minutes(), 7, 'minute');
- assert.equal(a.seconds(), 8, 'second');
- assert.equal(a.milliseconds(), 9, 'milliseconds');
- // Test month() behavior. See https://github.com/timrwood/moment/pull/822
- a = moment('20130531', 'YYYYMMDD');
- a.month(3);
- assert.equal(a.month(), 3, 'month edge case');
- });
- test('setters programatic with weeks', function (assert) {
- var a = moment();
- a.set('weekYear', 2001);
- a.set('week', 49);
- a.set('day', 4);
- assert.equal(a.weekYear(), 2001, 'weekYear');
- assert.equal(a.week(), 49, 'week');
- assert.equal(a.day(), 4, 'day');
- a.set('weekday', 1);
- assert.equal(a.weekday(), 1, 'weekday');
- });
- test('setters programatic with weeks ISO', function (assert) {
- var a = moment();
- a.set('isoWeekYear', 2001);
- a.set('isoWeek', 49);
- a.set('isoWeekday', 4);
- assert.equal(a.isoWeekYear(), 2001, 'isoWeekYear');
- assert.equal(a.isoWeek(), 49, 'isoWeek');
- assert.equal(a.isoWeekday(), 4, 'isoWeekday');
- });
- test('setters strings', function (assert) {
- var a = moment([2012]).locale('en');
- assert.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name');
- assert.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name');
- assert.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name');
- assert.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name');
- assert.equal(a.clone().month(0).month('April').month(), 3, 'month full name');
- assert.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name');
- assert.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name');
- });
- test('setters - falsey values', function (assert) {
- var a = moment();
- // ensure minutes wasn't coincidentally 0 already
- a.minutes(1);
- a.minutes(0);
- assert.equal(a.minutes(), 0, 'falsey value');
- });
- test('chaining setters', function (assert) {
- var a = moment();
- a.year(2011)
- .month(9)
- .date(12)
- .hours(6)
- .minutes(7)
- .seconds(8);
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hours(), 6, 'hour');
- assert.equal(a.minutes(), 7, 'minute');
- assert.equal(a.seconds(), 8, 'second');
- });
- test('setter with multiple unit values', function (assert) {
- var a = moment();
- a.set({
- year: 2011,
- month: 9,
- date: 12,
- hours: 6,
- minutes: 7,
- seconds: 8,
- milliseconds: 9
- });
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hours(), 6, 'hour');
- assert.equal(a.minutes(), 7, 'minute');
- assert.equal(a.seconds(), 8, 'second');
- assert.equal(a.milliseconds(), 9, 'milliseconds');
- var c = moment([2016,0,1]);
- assert.equal(c.set({weekYear: 2016}).weekYear(), 2016, 'week year correctly sets with object syntax');
- assert.equal(c.set({quarter: 3}).quarter(), 3, 'quarter sets correctly with object syntax');
- });
- test('day setter', function (assert) {
- var a = moment([2011, 0, 15]);
- assert.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday');
- assert.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday');
- assert.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday');
- a = moment([2011, 0, 9]);
- assert.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday');
- assert.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday');
- assert.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday');
- a = moment([2011, 0, 12]);
- assert.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday');
- assert.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday');
- assert.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday');
- assert.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday');
- assert.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday');
- assert.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday');
- assert.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday');
- assert.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday');
- assert.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday');
- assert.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday');
- assert.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday');
- assert.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday');
- });
- test('object set ordering', function (assert) {
- var a = moment([2016,3,30]);
- assert.equal(a.set({date:31, month:4}).date(), 31, 'setter order automatically arranged by size');
- var b = moment([2015,1,28]);
- assert.equal(b.set({date:29, year: 2016}).format('YYYY-MM-DD'), '2016-02-29', 'year is prioritized over date');
- //check a nonexistent time in US isn't set
- var c = moment([2016,2,13]);
- c.set({
- hour:2,
- minutes:30,
- date: 14
- });
- assert.equal(c.format('YYYY-MM-DDTHH:mm'), '2016-03-14T02:30', 'setting hours, minutes date puts date first allowing time set to work');
- });
- test('string setters', 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('9');
- assert.equal(a.year(), 2011, 'year');
- assert.equal(a.month(), 9, 'month');
- assert.equal(a.date(), 12, 'date');
- assert.equal(a.day(), 3, 'day');
- assert.equal(a.hours(), 6, 'hour');
- assert.equal(a.minutes(), 7, 'minute');
- assert.equal(a.seconds(), 8, 'second');
- assert.equal(a.milliseconds(), 9, 'milliseconds');
- });
- test('setters across DST +1', function (assert) {
- var oldUpdateOffset = moment.updateOffset,
- // Based on a real story somewhere in America/Los_Angeles
- dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(),
- m;
- moment.updateOffset = function (mom, keepTime) {
- if (mom.isBefore(dstAt)) {
- mom.utcOffset(-8, keepTime);
- } else {
- mom.utcOffset(-7, keepTime);
- }
- };
- m = moment('2014-03-15T00:00:00-07:00').parseZone();
- m.year(2013);
- assert.equal(m.format(), '2013-03-15T00:00:00-08:00', 'year across +1');
- m = moment('2014-03-15T00:00:00-07:00').parseZone();
- m.month(0);
- assert.equal(m.format(), '2014-01-15T00:00:00-08:00', 'month across +1');
- m = moment('2014-03-15T00:00:00-07:00').parseZone();
- m.date(1);
- assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'date across +1');
- m = moment('2014-03-09T03:05:00-07:00').parseZone();
- m.hour(0);
- assert.equal(m.format(), '2014-03-09T00:05:00-08:00', 'hour across +1');
- moment.updateOffset = oldUpdateOffset;
- });
- test('setters across DST -1', function (assert) {
- var oldUpdateOffset = moment.updateOffset,
- // Based on a real story somewhere in America/Los_Angeles
- dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(),
- m;
- moment.updateOffset = function (mom, keepTime) {
- if (mom.isBefore(dstAt)) {
- mom.utcOffset(-7, keepTime);
- } else {
- mom.utcOffset(-8, keepTime);
- }
- };
- m = moment('2014-11-15T00:00:00-08:00').parseZone();
- m.year(2013);
- assert.equal(m.format(), '2013-11-15T00:00:00-07:00', 'year across -1');
- m = moment('2014-11-15T00:00:00-08:00').parseZone();
- m.month(0);
- assert.equal(m.format(), '2014-01-15T00:00:00-07:00', 'month across -1');
- m = moment('2014-11-15T00:00:00-08:00').parseZone();
- m.date(1);
- assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'date across -1');
- m = moment('2014-11-02T03:30:00-08:00').parseZone();
- m.hour(0);
- assert.equal(m.format(), '2014-11-02T00:30:00-07:00', 'hour across -1');
- moment.updateOffset = oldUpdateOffset;
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('instanceof');
- test('instanceof', function (assert) {
- var mm = moment([2010, 0, 1]);
- var extend = function (a, b) {
- var i;
- for (i in b) {
- a[i] = b[i];
- }
- return a;
- };
- assert.equal(moment() instanceof moment, true, 'simple moment object');
- assert.equal(extend({}, moment()) instanceof moment, false, 'extended moment object');
- assert.equal(moment(null) instanceof moment, true, 'invalid moment object');
- assert.equal(new Date() instanceof moment, false, 'date object is not moment object');
- assert.equal(Object instanceof moment, false, 'Object is not moment object');
- assert.equal('foo' instanceof moment, false, 'string is not moment object');
- assert.equal(1 instanceof moment, false, 'number is not moment object');
- assert.equal(NaN instanceof moment, false, 'NaN is not moment object');
- assert.equal(null instanceof moment, false, 'null is not moment object');
- assert.equal(undefined instanceof moment, false, 'undefined is not moment object');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('invalid');
- test('invalid', function (assert) {
- var m = moment.invalid();
- assert.equal(m.isValid(), false);
- assert.equal(m.parsingFlags().userInvalidated, true);
- assert.ok(isNaN(m.valueOf()));
- });
- test('invalid with existing flag', function (assert) {
- var m = moment.invalid({invalidMonth : 'whatchamacallit'});
- assert.equal(m.isValid(), false);
- assert.equal(m.parsingFlags().userInvalidated, false);
- assert.equal(m.parsingFlags().invalidMonth, 'whatchamacallit');
- assert.ok(isNaN(m.valueOf()));
- });
- test('invalid with custom flag', function (assert) {
- var m = moment.invalid({tooBusyWith : 'reiculating splines'});
- assert.equal(m.isValid(), false);
- assert.equal(m.parsingFlags().userInvalidated, false);
- assert.equal(m.parsingFlags().tooBusyWith, 'reiculating splines');
- assert.ok(isNaN(m.valueOf()));
- });
- test('invalid operations', function (assert) {
- var invalids = [
- moment.invalid(),
- moment('xyz', 'l'),
- moment('2015-01-35', 'YYYY-MM-DD'),
- moment('2015-01-25 a', 'YYYY-MM-DD', true)
- ],
- i,
- invalid,
- valid = moment();
- test.expectedDeprecations('moment().min', 'moment().max', 'isDSTShifted');
- for (i = 0; i < invalids.length; ++i) {
- invalid = invalids[i];
- assert.ok(!invalid.clone().add(5, 'hours').isValid(), 'invalid.add is invalid');
- assert.equal(invalid.calendar(), 'Invalid date', 'invalid.calendar is \'Invalid date\'');
- assert.ok(!invalid.clone().isValid(), 'invalid.clone is invalid');
- assert.ok(isNaN(invalid.diff(valid)), 'invalid.diff(valid) is NaN');
- assert.ok(isNaN(valid.diff(invalid)), 'valid.diff(invalid) is NaN');
- assert.ok(isNaN(invalid.diff(invalid)), 'invalid.diff(invalid) is NaN');
- assert.ok(!invalid.clone().endOf('month').isValid(), 'invalid.endOf is invalid');
- assert.equal(invalid.format(), 'Invalid date', 'invalid.format is \'Invalid date\'');
- assert.equal(invalid.from(), 'Invalid date');
- assert.equal(invalid.from(valid), 'Invalid date');
- assert.equal(valid.from(invalid), 'Invalid date');
- assert.equal(invalid.fromNow(), 'Invalid date');
- assert.equal(invalid.to(), 'Invalid date');
- assert.equal(invalid.to(valid), 'Invalid date');
- assert.equal(valid.to(invalid), 'Invalid date');
- assert.equal(invalid.toNow(), 'Invalid date');
- assert.ok(isNaN(invalid.get('year')), 'invalid.get is NaN');
- // TODO invalidAt
- assert.ok(!invalid.isAfter(valid));
- assert.ok(!valid.isAfter(invalid));
- assert.ok(!invalid.isAfter(invalid));
- assert.ok(!invalid.isBefore(valid));
- assert.ok(!valid.isBefore(invalid));
- assert.ok(!invalid.isBefore(invalid));
- assert.ok(!invalid.isBetween(valid, valid));
- assert.ok(!valid.isBetween(invalid, valid));
- assert.ok(!valid.isBetween(valid, invalid));
- assert.ok(!invalid.isSame(invalid));
- assert.ok(!invalid.isSame(valid));
- assert.ok(!valid.isSame(invalid));
- assert.ok(!invalid.isValid());
- assert.equal(invalid.locale(), 'en');
- assert.equal(invalid.localeData()._abbr, 'en');
- assert.ok(!invalid.clone().max(valid).isValid());
- assert.ok(!valid.clone().max(invalid).isValid());
- assert.ok(!invalid.clone().max(invalid).isValid());
- assert.ok(!invalid.clone().min(valid).isValid());
- assert.ok(!valid.clone().min(invalid).isValid());
- assert.ok(!invalid.clone().min(invalid).isValid());
- assert.ok(!moment.min(invalid, valid).isValid());
- assert.ok(!moment.min(valid, invalid).isValid());
- assert.ok(!moment.max(invalid, valid).isValid());
- assert.ok(!moment.max(valid, invalid).isValid());
- assert.ok(!invalid.clone().set('year', 2005).isValid());
- assert.ok(!invalid.clone().startOf('month').isValid());
- assert.ok(!invalid.clone().subtract(5, 'days').isValid());
- assert.deepEqual(invalid.toArray(), [NaN, NaN, NaN, NaN, NaN, NaN, NaN]);
- assert.deepEqual(invalid.toObject(), {
- years: NaN,
- months: NaN,
- date: NaN,
- hours: NaN,
- minutes: NaN,
- seconds: NaN,
- milliseconds: NaN
- });
- assert.ok(moment.isDate(invalid.toDate()));
- assert.ok(isNaN(invalid.toDate().valueOf()));
- assert.equal(invalid.toJSON(), null);
- assert.equal(invalid.toString(), 'Invalid date');
- assert.ok(isNaN(invalid.unix()));
- assert.ok(isNaN(invalid.valueOf()));
- assert.ok(isNaN(invalid.year()));
- assert.ok(isNaN(invalid.weekYear()));
- assert.ok(isNaN(invalid.isoWeekYear()));
- assert.ok(isNaN(invalid.quarter()));
- assert.ok(isNaN(invalid.quarters()));
- assert.ok(isNaN(invalid.month()));
- assert.ok(isNaN(invalid.daysInMonth()));
- assert.ok(isNaN(invalid.week()));
- assert.ok(isNaN(invalid.weeks()));
- assert.ok(isNaN(invalid.isoWeek()));
- assert.ok(isNaN(invalid.isoWeeks()));
- assert.ok(isNaN(invalid.weeksInYear()));
- assert.ok(isNaN(invalid.isoWeeksInYear()));
- assert.ok(isNaN(invalid.date()));
- assert.ok(isNaN(invalid.day()));
- assert.ok(isNaN(invalid.days()));
- assert.ok(isNaN(invalid.weekday()));
- assert.ok(isNaN(invalid.isoWeekday()));
- assert.ok(isNaN(invalid.dayOfYear()));
- assert.ok(isNaN(invalid.hour()));
- assert.ok(isNaN(invalid.hours()));
- assert.ok(isNaN(invalid.minute()));
- assert.ok(isNaN(invalid.minutes()));
- assert.ok(isNaN(invalid.second()));
- assert.ok(isNaN(invalid.seconds()));
- assert.ok(isNaN(invalid.millisecond()));
- assert.ok(isNaN(invalid.milliseconds()));
- assert.ok(isNaN(invalid.utcOffset()));
- assert.ok(!invalid.clone().year(2001).isValid());
- assert.ok(!invalid.clone().weekYear(2001).isValid());
- assert.ok(!invalid.clone().isoWeekYear(2001).isValid());
- assert.ok(!invalid.clone().quarter(1).isValid());
- assert.ok(!invalid.clone().quarters(1).isValid());
- assert.ok(!invalid.clone().month(1).isValid());
- assert.ok(!invalid.clone().week(1).isValid());
- assert.ok(!invalid.clone().weeks(1).isValid());
- assert.ok(!invalid.clone().isoWeek(1).isValid());
- assert.ok(!invalid.clone().isoWeeks(1).isValid());
- assert.ok(!invalid.clone().date(1).isValid());
- assert.ok(!invalid.clone().day(1).isValid());
- assert.ok(!invalid.clone().days(1).isValid());
- assert.ok(!invalid.clone().weekday(1).isValid());
- assert.ok(!invalid.clone().isoWeekday(1).isValid());
- assert.ok(!invalid.clone().dayOfYear(1).isValid());
- assert.ok(!invalid.clone().hour(1).isValid());
- assert.ok(!invalid.clone().hours(1).isValid());
- assert.ok(!invalid.clone().minute(1).isValid());
- assert.ok(!invalid.clone().minutes(1).isValid());
- assert.ok(!invalid.clone().second(1).isValid());
- assert.ok(!invalid.clone().seconds(1).isValid());
- assert.ok(!invalid.clone().millisecond(1).isValid());
- assert.ok(!invalid.clone().milliseconds(1).isValid());
- assert.ok(!invalid.clone().utcOffset(1).isValid());
- assert.ok(!invalid.clone().utc().isValid());
- assert.ok(!invalid.clone().local().isValid());
- assert.ok(!invalid.clone().parseZone('05:30').isValid());
- assert.ok(!invalid.hasAlignedHourOffset());
- assert.ok(!invalid.isDST());
- assert.ok(!invalid.isDSTShifted());
- assert.ok(!invalid.isLocal());
- assert.ok(!invalid.isUtcOffset());
- assert.ok(!invalid.isUtc());
- assert.ok(!invalid.isUTC());
- assert.ok(!invalid.isLeapYear());
- assert.equal(moment.duration({from: invalid, to: valid}).asMilliseconds(), 0);
- assert.equal(moment.duration({from: valid, to: invalid}).asMilliseconds(), 0);
- assert.equal(moment.duration({from: invalid, to: invalid}).asMilliseconds(), 0);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is after');
- test('is after without units', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, 'day is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, 'hour is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, 'minute is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, 'second is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, 'millisecond is earlier');
- assert.equal(m.isAfter(m), false, 'moments are not after themselves');
- assert.equal(+m, +mCopy, 'isAfter second should not change moment');
- });
- test('is after year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match');
- assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year');
- assert.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year');
- assert.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year');
- assert.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of previous year');
- assert.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of year far before');
- assert.equal(m.isAfter(m, 'year'), false, 'same moments are not after the same year');
- assert.equal(+m, +mCopy, 'isAfter year should not change moment');
- });
- test('is after month', function (assert) {
- var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match');
- assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month');
- assert.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, 'end of previous month');
- assert.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, 'later month but earlier year');
- assert.equal(m.isAfter(m, 'month'), false, 'same moments are not after the same month');
- assert.equal(+m, +mCopy, 'isAfter month should not change moment');
- });
- test('is after day', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, 'day is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, 'day is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, 'end of previous day');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, 'later day but earlier year');
- assert.equal(m.isAfter(m, 'day'), false, 'same moments are not after the same day');
- assert.equal(+m, +mCopy, 'isAfter day should not change moment');
- });
- test('is after hour', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, 'day is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, 'day is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, 'hour is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, 'end of previous hour');
- assert.equal(m.isAfter(m, 'hour'), false, 'same moments are not after the same hour');
- assert.equal(+m, +mCopy, 'isAfter hour should not change moment');
- });
- test('is after minute', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, 'day is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, 'day is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, 'hour is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, 'hour is earler');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, 'minute is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, 'minute is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, 'end of previous minute');
- assert.equal(m.isAfter(m, 'minute'), false, 'same moments are not after the same minute');
- assert.equal(+m, +mCopy, 'isAfter minute should not change moment');
- });
- test('is after second', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, 'day is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, 'day is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, 'hour is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, 'hour is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, 'minute is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, 'minute is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, 'second is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, 'second is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, 'end of previous second');
- assert.equal(m.isAfter(m, 'second'), false, 'same moments are not after the same second');
- assert.equal(+m, +mCopy, 'isAfter second should not change moment');
- });
- test('is after millisecond', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work');
- assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later');
- assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later');
- assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, 'day is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, 'hour is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, 'minute is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, 'second is earlier');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later');
- assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, 'millisecond is earlier');
- assert.equal(m.isAfter(m, 'millisecond'), false, 'same moments are not after the same millisecond');
- assert.equal(+m, +mCopy, 'isAfter millisecond should not change moment');
- });
- test('is after invalid', function (assert) {
- var m = moment(), invalid = moment.invalid();
- assert.equal(m.isAfter(invalid), false, 'valid moment is not after invalid moment');
- assert.equal(invalid.isAfter(m), false, 'invalid moment is not after valid moment');
- assert.equal(m.isAfter(invalid, 'year'), false, 'invalid moment year');
- assert.equal(m.isAfter(invalid, 'month'), false, 'invalid moment month');
- assert.equal(m.isAfter(invalid, 'day'), false, 'invalid moment day');
- assert.equal(m.isAfter(invalid, 'hour'), false, 'invalid moment hour');
- assert.equal(m.isAfter(invalid, 'minute'), false, 'invalid moment minute');
- assert.equal(m.isAfter(invalid, 'second'), false, 'invalid moment second');
- assert.equal(m.isAfter(invalid, 'milliseconds'), false, 'invalid moment milliseconds');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function isArray(input) {
- return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
- }
- test('isArray recognizes Array objects', function (assert) {
- assert.ok(isArray([1,2,3]), 'array args');
- assert.ok(isArray([]), 'empty array');
- assert.ok(isArray(new Array(1,2,3)), 'array constructor');
- });
- test('isArray rejects non-Array objects', function (assert) {
- assert.ok(!isArray(), 'nothing');
- assert.ok(!isArray(undefined), 'undefined');
- assert.ok(!isArray(null), 'null');
- assert.ok(!isArray(123), 'number');
- assert.ok(!isArray('[1,2,3]'), 'string');
- assert.ok(!isArray(new Date()), 'date');
- assert.ok(!isArray({a:1,b:2}), 'object');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is before');
- test('is after without units', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier');
- assert.equal(m.isBefore(m), false, 'moments are not before themselves');
- assert.equal(+m, +mCopy, 'isBefore second should not change moment');
- });
- test('is before year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match');
- assert.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year');
- assert.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year');
- assert.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, 'start of next year');
- assert.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year');
- assert.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of year far before');
- assert.equal(m.isBefore(m, 'year'), false, 'same moments are not before the same year');
- assert.equal(+m, +mCopy, 'isBefore year should not change moment');
- });
- test('is before month', function (assert) {
- var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match');
- assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, 'start of next month');
- assert.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month');
- assert.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, 'later month but earlier year');
- assert.equal(m.isBefore(m, 'month'), false, 'same moments are not before the same month');
- assert.equal(+m, +mCopy, 'isBefore month should not change moment');
- });
- test('is before day', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, 'day is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, 'day is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, 'start of next day');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, 'later day but earlier year');
- assert.equal(m.isBefore(m, 'day'), false, 'same moments are not before the same day');
- assert.equal(+m, +mCopy, 'isBefore day should not change moment');
- });
- test('is before hour', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, 'day is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, 'day is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, 'hour is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, 'start of next hour');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour');
- assert.equal(m.isBefore(m, 'hour'), false, 'same moments are not before the same hour');
- assert.equal(+m, +mCopy, 'isBefore hour should not change moment');
- });
- test('is before minute', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, 'day is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, 'day is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, 'hour is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, 'hour is earler');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, 'minute is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, 'minute is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, 'start of next minute');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute');
- assert.equal(m.isBefore(m, 'minute'), false, 'same moments are not before the same minute');
- assert.equal(+m, +mCopy, 'isBefore minute should not change moment');
- });
- test('is before second', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, 'day is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, 'day is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, 'hour is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, 'hour is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, 'minute is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, 'minute is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, 'second is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, 'second is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, 'start of next second');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second');
- assert.equal(m.isBefore(m, 'second'), false, 'same moments are not before the same second');
- assert.equal(+m, +mCopy, 'isBefore second should not change moment');
- });
- test('is before millisecond', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, 'plural should work');
- assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is later');
- assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is later');
- assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, 'day is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, 'hour is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, 'minute is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, 'second is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, 'millisecond is later');
- assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier');
- assert.equal(m.isBefore(m, 'millisecond'), false, 'same moments are not before the same millisecond');
- assert.equal(+m, +mCopy, 'isBefore millisecond should not change moment');
- });
- test('is before invalid', function (assert) {
- var m = moment(), invalid = moment.invalid();
- assert.equal(m.isBefore(invalid), false, 'valid moment is not before invalid moment');
- assert.equal(invalid.isBefore(m), false, 'invalid moment is not before valid moment');
- assert.equal(m.isBefore(invalid, 'year'), false, 'invalid moment year');
- assert.equal(m.isBefore(invalid, 'month'), false, 'invalid moment month');
- assert.equal(m.isBefore(invalid, 'day'), false, 'invalid moment day');
- assert.equal(m.isBefore(invalid, 'hour'), false, 'invalid moment hour');
- assert.equal(m.isBefore(invalid, 'minute'), false, 'invalid moment minute');
- assert.equal(m.isBefore(invalid, 'second'), false, 'invalid moment second');
- assert.equal(m.isBefore(invalid, 'milliseconds'), false, 'invalid moment milliseconds');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is between');
- test('is between without units', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'year is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2013, 3, 2, 3, 4, 5, 10))), false, 'year is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10))), true, 'year is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'month is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 5, 2, 3, 4, 5, 10))), false, 'month is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 2, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 1, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'day is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 4, 3, 4, 5, 10))), false, 'day is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 1, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 1, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'hour is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 5, 4, 5, 10))), false, 'hour is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 2, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 6, 5, 10))), false, 'minute is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 2, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'minute is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 3, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 7, 10))), false, 'second is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 3, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'second is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 4, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 12))), false, 'millisecond is later');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 8)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 9)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is between');
- assert.equal(m.isBetween(m, m), false, 'moments are not between themselves');
- assert.equal(+m, +mCopy, 'isBetween second should not change moment');
- });
- test('is between without units inclusivity', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, start is equal to moment');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, end is equal to moment');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), true, 'start and end are excluded, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, should fail on same start/end date.');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included should fail on same start date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '(]'), true, 'start is excluded and end is included should succeed on end date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), true, 'start is excluded and end is included, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included, should fail on same start/end date.');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), true, 'start is included and end is excluded should succeed on same start date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded should fail on same end date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), true, 'start is included and end is excluded, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded, should fail on same end and start date');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive should succeed on same start date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive should succeed on same end date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '[]'), false, 'start and end inclusive, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive, should handle same end and start date');
- });
- test('is between milliseconds inclusivity', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'options, no inclusive');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, start is equal to moment');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, end is equal to moment');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), true, 'start and end are excluded, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, should fail on same start/end date.');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included should fail on same start date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), true, 'start is excluded and end is included should succeed on end date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), true, 'start is excluded and end is included, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included, should fail on same start/end date.');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), true, 'start is included and end is excluded should succeed on same start date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded should fail on same end date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), true, 'start is included and end is excluded, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded, should fail on same end and start date');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive should succeed on same start date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive should succeed on same end date');
- assert.equal(m.isBetween(
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, is between');
- assert.equal(m.isBetween(
- moment(new Date(2009, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), false, 'start and end inclusive, is not between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, should handle same end and start date');
- });
- test('is between year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 5, 6, 7, 8, 9, 10)),
- moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match');
- assert.equal(m.isBetween(
- moment(new Date(2010, 5, 6, 7, 8, 9, 10)),
- moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2010, 5, 6, 7, 8, 9, 10)),
- moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 5, 6, 7, 8, 9, 10)),
- moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2010, 5, 6, 7, 8, 9, 10)),
- moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later');
- assert.equal(m.isBetween(m, 'year'), false, 'same moments are not between the same year');
- assert.equal(+m, +mCopy, 'isBetween year should not change moment');
- });
- test('is between month', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 6, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month match');
- assert.equal(m.isBetween(
- moment(new Date(2011, 0, 6, 7, 8, 9, 10)),
- moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2011, 0, 31, 23, 59, 59, 999)),
- moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'month is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 6, 7, 8, 9, 10)),
- moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 11, 6, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is later');
- assert.equal(m.isBetween(m, 'month'), false, 'same moments are not between the same month');
- assert.equal(+m, +mCopy, 'isBetween month should not change moment');
- });
- test('is between day', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day match');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 1, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'days'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 1, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), true, 'day is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 4, 7, 8, 9, 10)), 'day'), false, 'day is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 1, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day is later');
- assert.equal(m.isBetween(m, 'day'), false, 'same moments are not between the same day');
- assert.equal(+m, +mCopy, 'isBetween day should not change moment');
- });
- test('is between hour', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 5, 9, 10)),
- moment(new Date(2011, 1, 2, 3, 9, 9, 10)), 'hour'), false, 'hour match');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 1, 59, 59, 999)),
- moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hours'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 2, 59, 59, 999)),
- moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), true, 'hour is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)),
- moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is later');
- assert.equal(m.isBetween(m, 'hour'), false, 'same moments are not between the same hour');
- assert.equal(+m, +mCopy, 'isBetween hour should not change moment');
- });
- test('is between minute', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 9, 10)),
- moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 3, 9, 10)),
- moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minutes'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 3, 59, 999)),
- moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), true, 'minute is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 5, 0, 0)),
- moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'minute'), false, 'minute is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 2, 9, 10)),
- moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'minute is later');
- assert.equal(m.isBetween(m, 'minute'), false, 'same moments are not between the same minute');
- assert.equal(+m, +mCopy, 'isBetween minute should not change moment');
- });
- test('is between second', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 10)),
- moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), false, 'second match');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 4, 10)),
- moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'seconds'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 4, 999)),
- moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), true, 'second is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 6, 0)),
- moment(new Date(2011, 1, 2, 3, 4, 7, 10)), 'second'), false, 'second is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 3, 10)),
- moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'second is later');
- assert.equal(m.isBetween(m, 'second'), false, 'same moments are not between the same second');
- assert.equal(+m, +mCopy, 'isBetween second should not change moment');
- });
- test('is between millisecond', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 6)),
- moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond match');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 5)),
- moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'milliseconds'), true, 'plural should work');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 5)),
- moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'millisecond'), true, 'millisecond is between');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 7)),
- moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond is earlier');
- assert.equal(m.isBetween(
- moment(new Date(2011, 1, 2, 3, 4, 5, 4)),
- moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond is later');
- assert.equal(m.isBetween(m, 'millisecond'), false, 'same moments are not between the same millisecond');
- assert.equal(+m, +mCopy, 'isBetween millisecond should not change moment');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is date');
- test('isDate recognizes Date objects', function (assert) {
- assert.ok(moment.isDate(new Date()), 'no args (now)');
- assert.ok(moment.isDate(new Date([2014, 2, 15])), 'array args');
- assert.ok(moment.isDate(new Date('2014-03-15')), 'string args');
- assert.ok(moment.isDate(new Date('does NOT look like a date')), 'invalid date');
- });
- test('isDate rejects non-Date objects', function (assert) {
- assert.ok(!moment.isDate(), 'nothing');
- assert.ok(!moment.isDate(undefined), 'undefined');
- assert.ok(!moment.isDate(null), 'string args');
- assert.ok(!moment.isDate(42), 'number');
- assert.ok(!moment.isDate('2014-03-15'), 'string');
- assert.ok(!moment.isDate([2014, 2, 15]), 'array');
- assert.ok(!moment.isDate({year: 2014, month: 2, day: 15}), 'object');
- assert.ok(!moment.isDate({
- toString: function () {
- return '[object Date]';
- }
- }), 'lying object');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is moment');
- test('is moment object', function (assert) {
- var MyObj = function () {},
- extend = function (a, b) {
- var i;
- for (i in b) {
- a[i] = b[i];
- }
- return a;
- };
- MyObj.prototype.toDate = function () {
- return new Date();
- };
- assert.ok(moment.isMoment(moment()), 'simple moment object');
- assert.ok(moment.isMoment(moment(null)), 'invalid moment object');
- assert.ok(moment.isMoment(extend({}, moment())), 'externally cloned moments are moments');
- assert.ok(moment.isMoment(extend({}, moment.utc())), 'externally cloned utc moments are moments');
- assert.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object');
- assert.ok(!moment.isMoment(moment), 'moment function is not moment object');
- assert.ok(!moment.isMoment(new Date()), 'date object is not moment object');
- assert.ok(!moment.isMoment(Object), 'Object is not moment object');
- assert.ok(!moment.isMoment('foo'), 'string is not moment object');
- assert.ok(!moment.isMoment(1), 'number is not moment object');
- assert.ok(!moment.isMoment(NaN), 'NaN is not moment object');
- assert.ok(!moment.isMoment(null), 'null is not moment object');
- assert.ok(!moment.isMoment(undefined), 'undefined is not moment object');
- });
- test('is moment with hacked hasOwnProperty', function (assert) {
- var obj = {};
- // HACK to suppress jshint warning about bad property name
- obj['hasOwnMoney'.replace('Money', 'Property')] = function () {
- return true;
- };
- assert.ok(!moment.isMoment(obj), 'isMoment works even if passed object has a wrong hasOwnProperty implementation (ie8)');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function isNumber(input) {
- return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
- }
- test('isNumber recognizes numbers', function (assert) {
- assert.ok(isNumber(1), 'simple integer');
- assert.ok(isNumber(0), 'simple number');
- assert.ok(isNumber(-0), 'silly number');
- assert.ok(isNumber(1010010293029), 'large number');
- assert.ok(isNumber(Infinity), 'largest number');
- assert.ok(isNumber(-Infinity), 'smallest number');
- assert.ok(isNumber(NaN), 'not number');
- assert.ok(isNumber(1.100393830000), 'decimal numbers');
- assert.ok(isNumber(Math.LN2), 'natural log of two');
- assert.ok(isNumber(Math.PI), 'delicious number');
- assert.ok(isNumber(5e10), 'scientifically notated number');
- assert.ok(isNumber(new Number(1)), 'number primitive wrapped in an object'); // jshint ignore:line
- });
- test('isNumber rejects non-numbers', function (assert) {
- assert.ok(!isNumber(), 'nothing');
- assert.ok(!isNumber(undefined), 'undefined');
- assert.ok(!isNumber(null), 'null');
- assert.ok(!isNumber([1]), 'array');
- assert.ok(!isNumber('[1,2,3]'), 'string');
- assert.ok(!isNumber(new Date()), 'date');
- assert.ok(!isNumber({a:1,b:2}), 'object');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is same');
- test('is same without units', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later');
- assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later');
- assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier');
- assert.equal(m.isSame(m), true, 'moments are the same as themselves');
- assert.equal(+m, +mCopy, 'isSame second should not change moment');
- });
- test('is same year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match');
- assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year');
- assert.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year');
- assert.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year');
- assert.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year');
- assert.equal(m.isSame(m, 'year'), true, 'same moments are in the same year');
- assert.equal(+m, +mCopy, 'isSame year should not change moment');
- });
- test('is same month', function (assert) {
- var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match');
- assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month');
- assert.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month');
- assert.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month');
- assert.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month');
- assert.equal(m.isSame(m, 'month'), true, 'same moments are in the same month');
- assert.equal(+m, +mCopy, 'isSame month should not change moment');
- });
- test('is same day', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, 'day mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day');
- assert.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day');
- assert.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day');
- assert.equal(m.isSame(m, 'day'), true, 'same moments are in the same day');
- assert.equal(+m, +mCopy, 'isSame day should not change moment');
- });
- test('is same hour', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, 'month mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, 'day mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, 'hour mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour');
- assert.equal(m.isSame(m, 'hour'), true, 'same moments are in the same hour');
- assert.equal(+m, +mCopy, 'isSame hour should not change moment');
- });
- test('is same minute', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, 'day mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, 'hour mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, 'minute mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute');
- assert.equal(m.isSame(m, 'minute'), true, 'same moments are in the same minute');
- assert.equal(+m, +mCopy, 'isSame minute should not change moment');
- });
- test('is same second', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, 'day mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, 'hour mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, 'minute mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, 'second mismatch');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second');
- assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second');
- assert.equal(m.isSame(m, 'second'), true, 'same moments are in the same second');
- assert.equal(+m, +mCopy, 'isSame second should not change moment');
- });
- test('is same millisecond', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work');
- assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later');
- assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later');
- assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later');
- assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier');
- assert.equal(m.isSame(m, 'millisecond'), true, 'same moments are in the same millisecond');
- assert.equal(+m, +mCopy, 'isSame millisecond should not change moment');
- });
- test('is same with utc offset moments', function (assert) {
- assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSame(moment('2013-02-01'), 'year'), 'zoned vs local moment');
- assert.ok(moment('2013-02-01').isSame(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment');
- assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSame(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'),
- 'zoned vs (differently) zoned moment');
- });
- test('is same with invalid moments', function (assert) {
- assert.equal(moment.invalid().isSame(moment.invalid()), false, 'invalid moments are not considered equal');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is same or after');
- test('is same or after without units', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, 'day is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, 'hour is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, 'minute is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, 'second is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, 'millisecond is earlier');
- assert.equal(m.isSameOrAfter(m), true, 'moments are the same as themselves');
- assert.equal(+m, +mCopy, 'isSameOrAfter second should not change moment');
- });
- test('is same or after year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of previous year');
- assert.equal(m.isSameOrAfter(m, 'year'), true, 'same moments are in the same year');
- assert.equal(+m, +mCopy, 'isSameOrAfter year should not change moment');
- });
- test('is same or after month', function (assert) {
- var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, 'end of previous month');
- assert.equal(m.isSameOrAfter(m, 'month'), true, 'same moments are in the same month');
- assert.equal(+m, +mCopy, 'isSameOrAfter month should not change moment');
- });
- test('is same or after day', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 7, 8, 9, 10)), 'day'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 7, 8, 9, 10)), 'day'), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, 'day is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 7, 8, 9, 10)), 'day'), true, 'day is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), true, 'end of previous day');
- assert.equal(m.isSameOrAfter(m, 'day'), true, 'same moments are in the same day');
- assert.equal(+m, +mCopy, 'isSameOrAfter day should not change moment');
- });
- test('is same or after hour', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 8, 9, 10)), 'hour'), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, 'day is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 8, 9, 10)), 'hour'), true, 'day is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, 'hour is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 8, 9, 10)), 'hour'), true, 'hour is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), true, 'end of previous hour');
- assert.equal(m.isSameOrAfter(m, 'hour'), true, 'same moments are in the same hour');
- assert.equal(+m, +mCopy, 'isSameOrAfter hour should not change moment');
- });
- test('is same or after minute', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 4, 9, 10)), 'minute'), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, 'day is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 4, 9, 10)), 'minute'), true, 'day is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, 'hour is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 4, 9, 10)), 'minute'), true, 'hour is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, 'minute is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 9, 10)), 'minute'), true, 'minute is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), true, 'end of previous minute');
- assert.equal(m.isSameOrAfter(m, 'minute'), true, 'same moments are in the same minute');
- assert.equal(+m, +mCopy, 'isSameOrAfter minute should not change moment');
- });
- test('is same or after second', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 4, 5, 10)), 'second'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 4, 5, 10)), 'second'), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, 'day is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 4, 5, 10)), 'second'), true, 'day is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, 'hour is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 4, 5, 10)), 'second'), true, 'hour is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, 'minute is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 5, 10)), 'second'), true, 'minute is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, 'second is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 4, 10)), 'second'), true, 'second is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), true, 'end of previous second');
- assert.equal(m.isSameOrAfter(m, 'second'), true, 'same moments are in the same second');
- assert.equal(+m, +mCopy, 'isSameOrAfter second should not change moment');
- });
- test('is same or after millisecond', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work');
- assert.equal(m.isSameOrAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, 'day is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, 'hour is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, 'minute is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, 'second is earlier');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later');
- assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, 'millisecond is earlier');
- assert.equal(m.isSameOrAfter(m, 'millisecond'), true, 'same moments are in the same millisecond');
- assert.equal(+m, +mCopy, 'isSameOrAfter millisecond should not change moment');
- });
- test('is same or after with utc offset moments', function (assert) {
- assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrAfter(moment('2013-02-01'), 'year'), 'zoned vs local moment');
- assert.ok(moment('2013-02-01').isSameOrAfter(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment');
- assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrAfter(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'),
- 'zoned vs (differently) zoned moment');
- });
- test('is same or after with invalid moments', function (assert) {
- var m = moment(), invalid = moment.invalid();
- assert.equal(invalid.isSameOrAfter(invalid), false, 'invalid moments are not considered equal');
- assert.equal(m.isSameOrAfter(invalid), false, 'valid moment is not after invalid moment');
- assert.equal(invalid.isSameOrAfter(m), false, 'invalid moment is not after valid moment');
- assert.equal(m.isSameOrAfter(invalid, 'year'), false, 'invalid moment year');
- assert.equal(m.isSameOrAfter(invalid, 'month'), false, 'invalid moment month');
- assert.equal(m.isSameOrAfter(invalid, 'day'), false, 'invalid moment day');
- assert.equal(m.isSameOrAfter(invalid, 'hour'), false, 'invalid moment hour');
- assert.equal(m.isSameOrAfter(invalid, 'minute'), false, 'invalid moment minute');
- assert.equal(m.isSameOrAfter(invalid, 'second'), false, 'invalid moment second');
- assert.equal(m.isSameOrAfter(invalid, 'milliseconds'), false, 'invalid moment milliseconds');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is same or before');
- test('is same or before without units', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier');
- assert.equal(m.isSameOrBefore(m), true, 'moments are the same as themselves');
- assert.equal(+m, +mCopy, 'isSameOrBefore second should not change moment');
- });
- test('is same or before year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, 'start of next year');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year');
- assert.equal(m.isSameOrBefore(m, 'year'), true, 'same moments are in the same year');
- assert.equal(+m, +mCopy, 'isSameOrBefore year should not change moment');
- });
- test('is same or before month', function (assert) {
- var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, 'start of next month');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month');
- assert.equal(m.isSameOrBefore(m, 'month'), true, 'same moments are in the same month');
- assert.equal(+m, +mCopy, 'isSameOrBefore month should not change moment');
- });
- test('is same or before day', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 7, 8, 9, 10)), 'day'), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), true, 'day is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 7, 8, 9, 10)), 'day'), false, 'day is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), true, 'start of next day');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day');
- assert.equal(m.isSameOrBefore(m, 'day'), true, 'same moments are in the same day');
- assert.equal(+m, +mCopy, 'isSameOrBefore day should not change moment');
- });
- test('is same or before hour', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 8, 9, 10)), 'hour'), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), true, 'day is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 8, 9, 10)), 'hour'), false, 'day is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), true, 'hour is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 8, 9, 10)), 'hour'), false, 'hour is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), true, 'start of next hour');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour');
- assert.equal(m.isSameOrBefore(m, 'hour'), true, 'same moments are in the same hour');
- assert.equal(+m, +mCopy, 'isSameOrBefore hour should not change moment');
- });
- test('is same or before minute', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 4, 9, 10)), 'minute'), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), true, 'day is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 4, 9, 10)), 'minute'), false, 'day is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), true, 'hour is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 4, 9, 10)), 'minute'), false, 'hour is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), true, 'minute is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 9, 10)), 'minute'), false, 'minute is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), true, 'start of next minute');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute');
- assert.equal(m.isSameOrBefore(m, 'minute'), true, 'same moments are in the same minute');
- assert.equal(+m, +mCopy, 'isSameOrBefore minute should not change moment');
- });
- test('is same or before second', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 4, 5, 10)), 'second'), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), true, 'day is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 4, 5, 10)), 'second'), false, 'day is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), true, 'hour is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 4, 5, 10)), 'second'), false, 'hour is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), true, 'minute is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 5, 10)), 'second'), false, 'minute is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), true, 'second is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 4, 10)), 'second'), false, 'second is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), true, 'start of next second');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second');
- assert.equal(m.isSameOrBefore(m, 'second'), true, 'same moments are in the same second');
- assert.equal(+m, +mCopy, 'isSameOrBefore second should not change moment');
- });
- test('is same or before millisecond', function (assert) {
- var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m);
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work');
- assert.equal(m.isSameOrBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, 'day is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, 'hour is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, 'minute is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, 'second is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, 'millisecond is later');
- assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier');
- assert.equal(m.isSameOrBefore(m, 'millisecond'), true, 'same moments are in the same millisecond');
- assert.equal(+m, +mCopy, 'isSameOrBefore millisecond should not change moment');
- });
- test('is same with utc offset moments', function (assert) {
- assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrBefore(moment('2013-02-01'), 'year'), 'zoned vs local moment');
- assert.ok(moment('2013-02-01').isSameOrBefore(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment');
- assert.ok(
- moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrBefore(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'),
- 'zoned vs (differently) zoned moment'
- );
- });
- test('is same with invalid moments', function (assert) {
- var m = moment(), invalid = moment.invalid();
- assert.equal(invalid.isSameOrBefore(invalid), false, 'invalid moments are not considered equal');
- assert.equal(m.isSameOrBefore(invalid), false, 'valid moment is not before invalid moment');
- assert.equal(invalid.isSameOrBefore(m), false, 'invalid moment is not before valid moment');
- assert.equal(m.isSameOrBefore(invalid, 'year'), false, 'invalid moment year');
- assert.equal(m.isSameOrBefore(invalid, 'month'), false, 'invalid moment month');
- assert.equal(m.isSameOrBefore(invalid, 'day'), false, 'invalid moment day');
- assert.equal(m.isSameOrBefore(invalid, 'hour'), false, 'invalid moment hour');
- assert.equal(m.isSameOrBefore(invalid, 'minute'), false, 'invalid moment minute');
- assert.equal(m.isSameOrBefore(invalid, 'second'), false, 'invalid moment second');
- assert.equal(m.isSameOrBefore(invalid, 'milliseconds'), false, 'invalid moment milliseconds');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('is valid');
- test('array bad month', function (assert) {
- assert.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid');
- assert.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid');
- });
- test('array good month', function (assert) {
- for (var i = 0; i < 12; i++) {
- assert.equal(moment([2010, i]).isValid(), true, 'month ' + i);
- assert.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i);
- }
- });
- test('array bad date', function (assert) {
- var tests = [
- moment([2010, 0, 0]),
- moment([2100, 0, 32]),
- moment.utc([2010, 0, 0]),
- moment.utc([2100, 0, 32])
- ],
- i, m;
- for (i in tests) {
- m = tests[i];
- assert.equal(m.isValid(), false);
- }
- });
- test('h/hh with hour > 12', function (assert) {
- assert.ok(moment('06/20/2014 11:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh');
- assert.ok(moment('06/20/2014 11:51 AM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh');
- assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').isValid(), 'non-strict validity 23 for hh');
- assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').parsingFlags().bigHour, 'non-strict bigHour 23 for hh');
- assert.ok(!moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), 'validity 23 for hh');
- assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).parsingFlags().bigHour, 'bigHour 23 for hh');
- });
- test('array bad date leap year', function (assert) {
- assert.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29');
- assert.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29');
- assert.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30');
- assert.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30');
- assert.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29');
- assert.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29');
- assert.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30');
- assert.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30');
- });
- test('string + formats bad date', function (assert) {
- assert.equal(moment('2020-00-00', []).isValid(), false, 'invalid on empty array');
- assert.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array');
- assert.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array');
- assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first');
- assert.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last');
- assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both');
- assert.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last');
- assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover');
- assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover');
- assert.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover');
- });
- test('string nonsensical with format', function (assert) {
- assert.equal(moment('fail', 'MM-DD-YYYY').isValid(), false, 'string \'fail\' with format \'MM-DD-YYYY\'');
- assert.equal(moment('xx-xx-2001', 'DD-MM-YYY').isValid(), true, 'string \'xx-xx-2001\' with format \'MM-DD-YYYY\'');
- });
- test('string with bad month name', function (assert) {
- assert.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '\'Nam\' is an invalid month');
- assert.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '\'Aug\' is a valid month');
- });
- test('string with spaceless format', function (assert) {
- assert.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, 'Parsing 10Sep2001 should result in a valid date');
- });
- test('invalid string iso 8601', function (assert) {
- var tests = [
- '2010-00-00',
- '2010-01-00',
- '2010-01-40',
- '2010-01-01T24:01', // 24:00:00 is actually valid
- '2010-01-01T23:60',
- '2010-01-01T23:59:60'
- ], i;
- for (i = 0; i < tests.length; i++) {
- assert.equal(moment(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid');
- assert.equal(moment.utc(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid');
- }
- });
- test('invalid string iso 8601 + timezone', function (assert) {
- var tests = [
- '2010-00-00T+00:00',
- '2010-01-00T+00:00',
- '2010-01-40T+00:00',
- '2010-01-40T24:01+00:00',
- '2010-01-40T23:60+00:00',
- '2010-01-40T23:59:60+00:00',
- '2010-01-40T23:59:59.9999+00:00',
- '2010-01-40T23:59:59,9999+00:00'
- ], i;
- for (i = 0; i < tests.length; i++) {
- assert.equal(moment(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid');
- assert.equal(moment.utc(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid');
- }
- });
- test('valid string iso 8601 - not strict', function (assert) {
- var tests = [
- '2010-01-30 00:00:00,000Z',
- '20100101',
- '20100130',
- '20100130T23+00:00',
- '20100130T2359+0000',
- '20100130T235959+0000',
- '20100130T235959,999+0000',
- '20100130T235959,999-0700',
- '20100130T000000,000+0700',
- '20100130 000000,000Z'
- ];
- for (var i = 0; i < tests.length; i++) {
- assert.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid in normal');
- assert.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid in normal');
- }
- });
- test('valid string iso 8601 + timezone', function (assert) {
- var tests = [
- '2010-01-01',
- '2010-01-30',
- '2010-01-30T23+00:00',
- '2010-01-30T23:59+00:00',
- '2010-01-30T23:59:59+00:00',
- '2010-01-30T23:59:59.999+00:00',
- '2010-01-30T23:59:59.999-07:00',
- '2010-01-30T00:00:00.000+07:00',
- '2010-01-30T23:59:59.999-07',
- '2010-01-30T00:00:00.000+07',
- '2010-01-30 00:00:00.000Z'
- ], i;
- for (i = 0; i < tests.length; i++) {
- assert.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid in normal');
- assert.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid in normal');
- assert.equal(moment(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict');
- assert.equal(moment.utc(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict');
- }
- });
- test('invalidAt', function (assert) {
- assert.equal(moment([2000, 12]).invalidAt(), 1, 'month 12 is invalid: 0-11');
- assert.equal(moment([2000, 1, 30]).invalidAt(), 2, '30 is not a valid february day');
- assert.equal(moment([2000, 1, 29, 25]).invalidAt(), 3, '25 is invalid hour');
- assert.equal(moment([2000, 1, 29, 24, 1]).invalidAt(), 3, '24:01 is invalid hour');
- assert.equal(moment([2000, 1, 29, 23, 60]).invalidAt(), 4, '60 is invalid minute');
- assert.equal(moment([2000, 1, 29, 23, 59, 60]).invalidAt(), 5, '60 is invalid second');
- assert.equal(moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), 6, '1000 is invalid millisecond');
- assert.equal(moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), -1, '-1 if everything is fine');
- });
- test('valid Unix timestamp', function (assert) {
- assert.equal(moment(1371065286, 'X').isValid(), true, 'number integer');
- assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 1dp');
- assert.equal(moment(1379066897.7, 'X').isValid(), true, 'number 1dp');
- assert.equal(moment(1379066897.00, 'X').isValid(), true, 'number whole 2dp');
- assert.equal(moment(1379066897.07, 'X').isValid(), true, 'number 2dp');
- assert.equal(moment(1379066897.17, 'X').isValid(), true, 'number 2dp');
- assert.equal(moment(1379066897.000, 'X').isValid(), true, 'number whole 3dp');
- assert.equal(moment(1379066897.007, 'X').isValid(), true, 'number 3dp');
- assert.equal(moment(1379066897.017, 'X').isValid(), true, 'number 3dp');
- assert.equal(moment(1379066897.157, 'X').isValid(), true, 'number 3dp');
- assert.equal(moment('1371065286', 'X').isValid(), true, 'string integer');
- assert.equal(moment('1379066897.', 'X').isValid(), true, 'string trailing .');
- assert.equal(moment('1379066897.0', 'X').isValid(), true, 'string whole 1dp');
- assert.equal(moment('1379066897.7', 'X').isValid(), true, 'string 1dp');
- assert.equal(moment('1379066897.00', 'X').isValid(), true, 'string whole 2dp');
- assert.equal(moment('1379066897.07', 'X').isValid(), true, 'string 2dp');
- assert.equal(moment('1379066897.17', 'X').isValid(), true, 'string 2dp');
- assert.equal(moment('1379066897.000', 'X').isValid(), true, 'string whole 3dp');
- assert.equal(moment('1379066897.007', 'X').isValid(), true, 'string 3dp');
- assert.equal(moment('1379066897.017', 'X').isValid(), true, 'string 3dp');
- assert.equal(moment('1379066897.157', 'X').isValid(), true, 'string 3dp');
- });
- test('invalid Unix timestamp', function (assert) {
- assert.equal(moment(undefined, 'X').isValid(), false, 'undefined');
- assert.equal(moment('undefined', 'X').isValid(), false, 'string undefined');
- try {
- assert.equal(moment(null, 'X').isValid(), false, 'null');
- } catch (e) {
- assert.ok(true, 'null');
- }
- assert.equal(moment('null', 'X').isValid(), false, 'string null');
- assert.equal(moment([], 'X').isValid(), false, 'array');
- assert.equal(moment('{}', 'X').isValid(), false, 'object');
- try {
- assert.equal(moment('', 'X').isValid(), false, 'string empty');
- } catch (e) {
- assert.ok(true, 'string empty');
- }
- assert.equal(moment(' ', 'X').isValid(), false, 'string space');
- });
- test('valid Unix offset milliseconds', function (assert) {
- assert.equal(moment(1234567890123, 'x').isValid(), true, 'number integer');
- assert.equal(moment('1234567890123', 'x').isValid(), true, 'string integer');
- });
- test('invalid Unix offset milliseconds', function (assert) {
- assert.equal(moment(undefined, 'x').isValid(), false, 'undefined');
- assert.equal(moment('undefined', 'x').isValid(), false, 'string undefined');
- try {
- assert.equal(moment(null, 'x').isValid(), false, 'null');
- } catch (e) {
- assert.ok(true, 'null');
- }
- assert.equal(moment('null', 'x').isValid(), false, 'string null');
- assert.equal(moment([], 'x').isValid(), false, 'array');
- assert.equal(moment('{}', 'x').isValid(), false, 'object');
- try {
- assert.equal(moment('', 'x').isValid(), false, 'string empty');
- } catch (e) {
- assert.ok(true, 'string empty');
- }
- assert.equal(moment(' ', 'x').isValid(), false, 'string space');
- });
- test('empty', function (assert) {
- assert.equal(moment(null).isValid(), false, 'null');
- assert.equal(moment('').isValid(), false, 'empty string');
- assert.equal(moment(null, 'YYYY').isValid(), false, 'format + null');
- assert.equal(moment('', 'YYYY').isValid(), false, 'format + empty string');
- assert.equal(moment(' ', 'YYYY').isValid(), false, 'format + empty when trimmed');
- });
- test('days of the year', function (assert) {
- assert.equal(moment('2010 300', 'YYYY DDDD').isValid(), true, 'day 300 of year valid');
- assert.equal(moment('2010 365', 'YYYY DDDD').isValid(), true, 'day 365 of year valid');
- assert.equal(moment('2010 366', 'YYYY DDDD').isValid(), false, 'day 366 of year invalid');
- assert.equal(moment('2012 365', 'YYYY DDDD').isValid(), true, 'day 365 of leap year valid');
- assert.equal(moment('2012 366', 'YYYY DDDD').isValid(), true, 'day 366 of leap year valid');
- assert.equal(moment('2012 367', 'YYYY DDDD').isValid(), false, 'day 367 of leap year invalid');
- });
- test('24:00:00.000 is valid', function (assert) {
- assert.equal(moment('2014-01-01 24', 'YYYY-MM-DD HH').isValid(), true, '24 is valid');
- assert.equal(moment('2014-01-01 24:00', 'YYYY-MM-DD HH:mm').isValid(), true, '24:00 is valid');
- assert.equal(moment('2014-01-01 24:01', 'YYYY-MM-DD HH:mm').isValid(), false, '24:01 is not valid');
- });
- test('oddball permissiveness', function (assert) {
- // https://github.com/moment/moment/issues/1128
- assert.ok(moment('2010-10-3199', ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']).isValid());
- // https://github.com/moment/moment/issues/1122
- assert.ok(moment('3:25', ['h:mma', 'hh:mma', 'H:mm', 'HH:mm']).isValid());
- });
- test('0 hour is invalid in strict', function (assert) {
- assert.equal(moment('00:01', 'hh:mm', true).isValid(), false, '00 hour is invalid in strict');
- assert.equal(moment('00:01', 'hh:mm').isValid(), true, '00 hour is valid in normal');
- assert.equal(moment('0:01', 'h:mm', true).isValid(), false, '0 hour is invalid in strict');
- assert.equal(moment('0:01', 'h:mm').isValid(), true, '0 hour is valid in normal');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('leap year');
- test('leap year', function (assert) {
- assert.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010');
- assert.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100');
- assert.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008');
- assert.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('listers');
- test('default', function (assert) {
- assert.deepEqual(moment.months(), ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']);
- assert.deepEqual(moment.monthsShort(), ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']);
- assert.deepEqual(moment.weekdays(), ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']);
- assert.deepEqual(moment.weekdaysShort(), ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']);
- assert.deepEqual(moment.weekdaysMin(), ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']);
- });
- test('index', function (assert) {
- assert.equal(moment.months(0), 'January');
- assert.equal(moment.months(2), 'March');
- assert.equal(moment.monthsShort(0), 'Jan');
- assert.equal(moment.monthsShort(2), 'Mar');
- assert.equal(moment.weekdays(0), 'Sunday');
- assert.equal(moment.weekdays(2), 'Tuesday');
- assert.equal(moment.weekdaysShort(0), 'Sun');
- assert.equal(moment.weekdaysShort(2), 'Tue');
- assert.equal(moment.weekdaysMin(0), 'Su');
- assert.equal(moment.weekdaysMin(2), 'Tu');
- });
- test('localized', function (assert) {
- var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'),
- monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'),
- weekdays = 'one_two_three_four_five_six_seven'.split('_'),
- weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'),
- weekdaysMin = '1_2_3_4_5_6_7'.split('_'),
- weekdaysLocale = 'four_five_six_seven_one_two_three'.split('_'),
- weekdaysShortLocale = 'fo_fi_si_se_on_tw_th'.split('_'),
- weekdaysMinLocale = '4_5_6_7_1_2_3'.split('_'),
- week = {
- dow : 3,
- doy : 6
- };
- moment.locale('numerologists', {
- months : months,
- monthsShort : monthsShort,
- weekdays : weekdays,
- weekdaysShort: weekdaysShort,
- weekdaysMin: weekdaysMin,
- week : week
- });
- assert.deepEqual(moment.months(), months);
- assert.deepEqual(moment.monthsShort(), monthsShort);
- assert.deepEqual(moment.weekdays(), weekdays);
- assert.deepEqual(moment.weekdaysShort(), weekdaysShort);
- assert.deepEqual(moment.weekdaysMin(), weekdaysMin);
- assert.equal(moment.months(0), 'one');
- assert.equal(moment.monthsShort(0), 'on');
- assert.equal(moment.weekdays(0), 'one');
- assert.equal(moment.weekdaysShort(0), 'on');
- assert.equal(moment.weekdaysMin(0), '1');
- assert.equal(moment.months(2), 'three');
- assert.equal(moment.monthsShort(2), 'th');
- assert.equal(moment.weekdays(2), 'three');
- assert.equal(moment.weekdaysShort(2), 'th');
- assert.equal(moment.weekdaysMin(2), '3');
- assert.deepEqual(moment.weekdays(true), weekdaysLocale);
- assert.deepEqual(moment.weekdaysShort(true), weekdaysShortLocale);
- assert.deepEqual(moment.weekdaysMin(true), weekdaysMinLocale);
- assert.equal(moment.weekdays(true, 0), 'four');
- assert.equal(moment.weekdaysShort(true, 0), 'fo');
- assert.equal(moment.weekdaysMin(true, 0), '4');
- assert.equal(moment.weekdays(false, 2), 'three');
- assert.equal(moment.weekdaysShort(false, 2), 'th');
- assert.equal(moment.weekdaysMin(false, 2), '3');
- });
- test('with functions', function (assert) {
- var monthsShort = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'),
- monthsShortWeird = 'onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy'.split('_');
- moment.locale('difficult', {
- monthsShort: function (m, format) {
- var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort;
- return arr[m.month()];
- }
- });
- assert.deepEqual(moment.monthsShort(), monthsShort);
- assert.deepEqual(moment.monthsShort('MMM'), monthsShort);
- assert.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird);
- assert.deepEqual(moment.monthsShort('MMM', 2), 'three');
- assert.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy');
- assert.deepEqual(moment.monthsShort(2), 'three');
- });
- test('with locale data', function (assert) {
- var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'),
- monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'),
- weekdays = 'one_two_three_four_five_six_seven'.split('_'),
- weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'),
- weekdaysMin = '1_2_3_4_5_6_7'.split('_'),
- weekdaysLocale = 'four_five_six_seven_one_two_three'.split('_'),
- weekdaysShortLocale = 'fo_fi_si_se_on_tw_th'.split('_'),
- weekdaysMinLocale = '4_5_6_7_1_2_3'.split('_'),
- week = {
- dow : 3,
- doy : 6
- };
- var customLocale = moment.localeData('numerologists');
- assert.deepEqual(customLocale.months(), months);
- assert.deepEqual(customLocale.monthsShort(), monthsShort);
- assert.deepEqual(customLocale.weekdays(), weekdays);
- assert.deepEqual(customLocale.weekdaysShort(), weekdaysShort);
- assert.deepEqual(customLocale.weekdaysMin(), weekdaysMin);
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- var indexOf;
- if (Array.prototype.indexOf) {
- indexOf = Array.prototype.indexOf;
- } else {
- indexOf = function (o) {
- // I know
- var i;
- for (i = 0; i < this.length; ++i) {
- if (this[i] === o) {
- return i;
- }
- }
- return -1;
- };
- }
- var indexOf$1 = indexOf;
- module$1('locale', {
- setup : function () {
- // TODO: Remove once locales are switched to ES6
- each([{
- name: 'en-gb',
- data: {}
- }, {
- name: 'en-ca',
- data: {}
- }, {
- name: 'es',
- data: {
- relativeTime: {past: 'hace %s', s: 'unos segundos', d: 'un día'},
- months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_')
- }
- }, {
- name: 'fr',
- data: {}
- }, {
- name: 'fr-ca',
- data: {}
- }, {
- name: 'it',
- data: {}
- }, {
- name: 'zh-cn',
- data: {
- months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_')
- }
- }], function (locale) {
- if (moment.locale(locale.name) !== locale.name) {
- moment.defineLocale(locale.name, locale.data);
- }
- });
- moment.locale('en');
- }
- });
- test('library getters and setters', function (assert) {
- var r = moment.locale('en');
- assert.equal(r, 'en', 'locale should return en by default');
- assert.equal(moment.locale(), 'en', 'locale should return en by default');
- moment.locale('fr');
- assert.equal(moment.locale(), 'fr', 'locale should return the changed locale');
- moment.locale('en-gb');
- assert.equal(moment.locale(), 'en-gb', 'locale should return the changed locale');
- moment.locale('en');
- assert.equal(moment.locale(), 'en', 'locale should reset');
- moment.locale('does-not-exist');
- assert.equal(moment.locale(), 'en', 'locale should reset');
- moment.locale('EN');
- assert.equal(moment.locale(), 'en', 'Normalize locale key case');
- moment.locale('EN_gb');
- assert.equal(moment.locale(), 'en-gb', 'Normalize locale key underscore');
- });
- test('library setter array of locales', function (assert) {
- assert.equal(moment.locale(['non-existent', 'fr', 'also-non-existent']), 'fr', 'passing an array uses the first valid locale');
- assert.equal(moment.locale(['es', 'fr', 'also-non-existent']), 'es', 'passing an array uses the first valid locale');
- });
- test('library setter locale substrings', function (assert) {
- assert.equal(moment.locale('fr-crap'), 'fr', 'use substrings');
- assert.equal(moment.locale('fr-does-not-exist'), 'fr', 'uses deep substrings');
- assert.equal(moment.locale('fr-CA-does-not-exist'), 'fr-ca', 'uses deepest substring');
- });
- test('library getter locale array and substrings', function (assert) {
- assert.equal(moment.locale(['en-CH', 'fr']), 'en', 'prefer root locale to shallower ones');
- assert.equal(moment.locale(['en-gb-leeds', 'en-CA']), 'en-gb', 'prefer root locale to shallower ones');
- assert.equal(moment.locale(['en-fake', 'en-CA']), 'en-ca', 'prefer alternatives with shared roots');
- assert.equal(moment.locale(['en-fake', 'en-fake2', 'en-ca']), 'en-ca', 'prefer alternatives with shared roots');
- assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible');
- assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible');
- assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), 'fr', 'always find something if possible');
- assert.equal(moment.locale(['en', 'en-CA']), 'en', 'prefer earlier if it works');
- });
- test('library ensure inheritance', function (assert) {
- moment.locale('made-up', {
- // I put them out of order
- months : 'February_March_April_May_June_July_August_September_October_November_December_January'.split('_')
- // the rest of the properties should be inherited.
- });
- assert.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs');
- assert.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them');
- });
- test('library ensure inheritance LT L LL LLL LLLL', function (assert) {
- var locale = 'test-inherit-lt';
- moment.defineLocale(locale, {
- longDateFormat : {
- LT : '-[LT]-',
- L : '-[L]-',
- LL : '-[LL]-',
- LLL : '-[LLL]-',
- LLLL : '-[LLLL]-'
- },
- calendar : {
- sameDay : '[sameDay] LT',
- nextDay : '[nextDay] L',
- nextWeek : '[nextWeek] LL',
- lastDay : '[lastDay] LLL',
- lastWeek : '[lastWeek] LLLL',
- sameElse : 'L'
- }
- });
- moment.locale('es');
- assert.equal(moment().locale(locale).calendar(), 'sameDay -LT-', 'Should use instance locale in LT formatting');
- assert.equal(moment().add(1, 'days').locale(locale).calendar(), 'nextDay -L-', 'Should use instance locale in L formatting');
- assert.equal(moment().add(-1, 'days').locale(locale).calendar(), 'lastDay -LLL-', 'Should use instance locale in LL formatting');
- assert.equal(moment().add(4, 'days').locale(locale).calendar(), 'nextWeek -LL-', 'Should use instance locale in LLL formatting');
- assert.equal(moment().add(-4, 'days').locale(locale).calendar(), 'lastWeek -LLLL-', 'Should use instance locale in LLLL formatting');
- });
- test('library localeData', function (assert) {
- moment.locale('en');
- var jan = moment([2000, 0]);
- assert.equal(moment.localeData().months(jan), 'January', 'no arguments returns global');
- assert.equal(moment.localeData('zh-cn').months(jan), '一月', 'a string returns the locale based on key');
- assert.equal(moment.localeData(moment().locale('es')).months(jan), 'enero', 'if you pass in a moment it uses the moment\'s locale');
- });
- test('library deprecations', function (assert) {
- test.expectedDeprecations('moment.lang');
- moment.lang('dude', {months: ['Movember']});
- assert.equal(moment.locale(), 'dude', 'setting the lang sets the locale');
- assert.equal(moment.lang(), moment.locale());
- assert.equal(moment.langData(), moment.localeData(), 'langData is localeData');
- moment.defineLocale('dude', null);
- });
- test('defineLocale', function (assert) {
- moment.locale('en');
- moment.defineLocale('dude', {months: ['Movember']});
- assert.equal(moment().locale(), 'dude', 'defineLocale also sets it');
- assert.equal(moment().locale('dude').locale(), 'dude', 'defineLocale defines a locale');
- moment.defineLocale('dude', null);
- });
- test('locales', function (assert) {
- moment.defineLocale('dude', {months: ['Movember']});
- assert.equal(true, !!~indexOf$1.call(moment.locales(), 'dude'), 'locales returns an array of defined locales');
- assert.equal(true, !!~indexOf$1.call(moment.locales(), 'en'), 'locales should always include english');
- moment.defineLocale('dude', null);
- });
- test('library convenience', function (assert) {
- moment.locale('something', {week: {dow: 3}});
- moment.locale('something');
- assert.equal(moment.locale(), 'something', 'locale can be used to create the locale too');
- moment.defineLocale('something', null);
- });
- test('firstDayOfWeek firstDayOfYear locale getters', function (assert) {
- moment.locale('something', {week: {dow: 3, doy: 4}});
- moment.locale('something');
- assert.equal(moment.localeData().firstDayOfWeek(), 3, 'firstDayOfWeek');
- assert.equal(moment.localeData().firstDayOfYear(), 4, 'firstDayOfYear');
- moment.defineLocale('something', null);
- });
- test('instance locale method', function (assert) {
- moment.locale('en');
- assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global');
- assert.equal(moment([2012, 5, 6]).locale('es').format('MMMM'), 'junio', 'Use the instance specific locale');
- assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific locale does not affect other moments');
- });
- test('instance locale method with array', function (assert) {
- var m = moment().locale(['non-existent', 'fr', 'also-non-existent']);
- assert.equal(m.locale(), 'fr', 'passing an array uses the first valid locale');
- m = moment().locale(['es', 'fr', 'also-non-existent']);
- assert.equal(m.locale(), 'es', 'passing an array uses the first valid locale');
- });
- test('instance getter locale substrings', function (assert) {
- var m = moment();
- m.locale('fr-crap');
- assert.equal(m.locale(), 'fr', 'use substrings');
- m.locale('fr-does-not-exist');
- assert.equal(m.locale(), 'fr', 'uses deep substrings');
- });
- test('instance locale persists with manipulation', function (assert) {
- moment.locale('en');
- assert.equal(moment([2012, 5, 6]).locale('es').add({days: 1}).format('MMMM'), 'junio', 'With addition');
- assert.equal(moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), 'junio', 'With day getter');
- assert.equal(moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), 'junio', 'With endOf');
- });
- test('instance locale persists with cloning', function (assert) {
- moment.locale('en');
- var a = moment([2012, 5, 6]).locale('es'),
- b = a.clone(),
- c = moment(a);
- assert.equal(b.format('MMMM'), 'junio', 'using moment.fn.clone()');
- assert.equal(b.format('MMMM'), 'junio', 'using moment()');
- });
- test('duration locale method', function (assert) {
- moment.locale('en');
- assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global');
- assert.equal(moment.duration({seconds: 44}).locale('es').humanize(), 'unos segundos', 'Use the instance specific locale');
- assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific locale does not affect other durations');
- });
- test('duration locale persists with cloning', function (assert) {
- moment.locale('en');
- var a = moment.duration({seconds: 44}).locale('es'),
- b = moment.duration(a);
- assert.equal(b.humanize(), 'unos segundos', 'using moment.duration()');
- });
- test('changing the global locale doesn\'t affect existing duration instances', function (assert) {
- var mom = moment.duration();
- moment.locale('fr');
- assert.equal('en', mom.locale());
- });
- test('duration deprecations', function (assert) {
- test.expectedDeprecations('moment().lang()');
- assert.equal(moment.duration().lang(), moment.duration().localeData(), 'duration.lang is the same as duration.localeData');
- });
- test('from and fromNow with invalid date', function (assert) {
- assert.equal(moment(NaN).from(), 'Invalid date', 'moment.from with invalid moment');
- assert.equal(moment(NaN).fromNow(), 'Invalid date', 'moment.fromNow with invalid moment');
- });
- test('from relative time future', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 44})), 'in a few seconds', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 45})), 'in a minute', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 89})), 'in a minute', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 90})), 'in 2 minutes', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 44})), 'in 44 minutes', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 45})), 'in an hour', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 89})), 'in an hour', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 90})), 'in 2 hours', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 5})), 'in 5 hours', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 21})), 'in 21 hours', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 22})), 'in a day', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 35})), 'in a day', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 36})), 'in 2 days', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 1})), 'in a day', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 5})), 'in 5 days', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 25})), 'in 25 days', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 26})), 'in a month', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 30})), 'in a month', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 45})), 'in a month', '45 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 47})), 'in 2 months', '47 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 74})), 'in 2 months', '74 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 78})), 'in 3 months', '78 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 1})), 'in a month', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 5})), 'in 5 months', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 315})), 'in 10 months', '315 days = 10 months');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 344})), 'in a year', '344 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 345})), 'in a year', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 548})), 'in 2 years', '548 days = in 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 1})), 'in a year', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 5})), 'in 5 years', '5 years = 5 years');
- });
- test('from relative time past', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 44})), 'a few seconds ago', '44 seconds = a few seconds');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 45})), 'a minute ago', '45 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 89})), 'a minute ago', '89 seconds = a minute');
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90})), '2 minutes ago', '90 seconds = 2 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 44})), '44 minutes ago', '44 minutes = 44 minutes');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 45})), 'an hour ago', '45 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 89})), 'an hour ago', '89 minutes = an hour');
- assert.equal(start.from(moment([2007, 1, 28]).add({m: 90})), '2 hours ago', '90 minutes = 2 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 5})), '5 hours ago', '5 hours = 5 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 21})), '21 hours ago', '21 hours = 21 hours');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 22})), 'a day ago', '22 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 35})), 'a day ago', '35 hours = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({h: 36})), '2 days ago', '36 hours = 2 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 1})), 'a day ago', '1 day = a day');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 5})), '5 days ago', '5 days = 5 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 25})), '25 days ago', '25 days = 25 days');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 26})), 'a month ago', '26 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 30})), 'a month ago', '30 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 43})), 'a month ago', '43 days = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 46})), '2 months ago', '46 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 74})), '2 months ago', '75 days = 2 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 76})), '3 months ago', '76 days = 3 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 1})), 'a month ago', '1 month = a month');
- assert.equal(start.from(moment([2007, 1, 28]).add({M: 5})), '5 months ago', '5 months = 5 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 315})), '10 months ago', '315 days = 10 months');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 344})), 'a year ago', '344 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 345})), 'a year ago', '345 days = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({d: 548})), '2 years ago', '548 days = 2 years');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 1})), 'a year ago', '1 year = a year');
- assert.equal(start.from(moment([2007, 1, 28]).add({y: 5})), '5 years ago', '5 years = 5 years');
- });
- test('instance locale used with from', function (assert) {
- moment.locale('en');
- var a = moment([2012, 5, 6]).locale('es'),
- b = moment([2012, 5, 7]);
- assert.equal(a.from(b), 'hace un día', 'preserve locale of first moment');
- assert.equal(b.from(a), 'in a day', 'do not preserve locale of second moment');
- });
- test('instance localeData', function (assert) {
- moment.defineLocale('dude', {week: {dow: 3}});
- assert.equal(moment().locale('dude').localeData()._week.dow, 3);
- moment.defineLocale('dude', null);
- });
- test('month name callback function', function (assert) {
- function fakeReplace(m, format) {
- if (/test/.test(format)) {
- return 'test';
- }
- if (m.date() === 1) {
- return 'date';
- }
- return 'default';
- }
- moment.locale('made-up-2', {
- months : fakeReplace,
- monthsShort : fakeReplace,
- weekdays : fakeReplace,
- weekdaysShort : fakeReplace,
- weekdaysMin : fakeReplace
- });
- assert.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string');
- assert.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object');
- assert.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object');
- });
- test('changing parts of a locale config', function (assert) {
- test.expectedDeprecations('defineLocaleOverride');
- moment.locale('partial-lang', {
- months : 'a b c d e f g h i j k l'.split(' ')
- });
- assert.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set locale values when creating the localeuage');
- moment.locale('partial-lang', {
- monthsShort : 'A B C D E F G H I J K L'.split(' ')
- });
- assert.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set locale values after creating the localeuage');
- moment.defineLocale('partial-lang', null);
- });
- test('start/endOf week feature for first-day-is-monday locales', function (assert) {
- moment.locale('monday-lang', {
- week : {
- dow : 1 // Monday is the first day of the week
- }
- });
- moment.locale('monday-lang');
- assert.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for locale monday-lang first day of the week should be monday');
- assert.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for locale monday-lang last day of the week should be sunday');
- moment.defineLocale('monday-lang', null);
- });
- test('meridiem parsing', function (assert) {
- moment.locale('meridiem-parsing', {
- meridiemParse : /[bd]/i,
- isPM : function (input) {
- return input === 'b';
- }
- });
- moment.locale('meridiem-parsing');
- assert.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work');
- assert.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work');
- moment.defineLocale('meridiem-parsing', null);
- });
- test('invalid date formatting', function (assert) {
- moment.locale('has-invalid', {
- invalidDate: 'KHAAAAAAAAAAAN!'
- });
- assert.equal(moment.invalid().format(), 'KHAAAAAAAAAAAN!');
- assert.equal(moment.invalid().format('YYYY-MM-DD'), 'KHAAAAAAAAAAAN!');
- moment.defineLocale('has-invalid', null);
- });
- test('return locale name', function (assert) {
- var registered = moment.locale('return-this', {});
- assert.equal(registered, 'return-this', 'returns the locale configured');
- moment.locale('return-this', null);
- });
- test('changing the global locale doesn\'t affect existing instances', function (assert) {
- var mom = moment();
- moment.locale('fr');
- assert.equal('en', mom.locale());
- });
- test('setting a language on instance returns the original moment for chaining', function (assert) {
- test.expectedDeprecations('moment().lang()');
- var mom = moment();
- assert.equal(mom.lang('fr'), mom, 'setting the language (lang) returns the original moment for chaining');
- assert.equal(mom.locale('it'), mom, 'setting the language (locale) returns the original moment for chaining');
- });
- test('lang(key) changes the language of the instance', function (assert) {
- test.expectedDeprecations('moment().lang()');
- var m = moment().month(0);
- m.lang('fr');
- assert.equal(m.locale(), 'fr', 'm.lang(key) changes instance locale');
- });
- test('moment#locale(false) resets to global locale', function (assert) {
- var m = moment();
- moment.locale('fr');
- m.locale('it');
- assert.equal(moment.locale(), 'fr', 'global locale is it');
- assert.equal(m.locale(), 'it', 'instance locale is it');
- m.locale(false);
- assert.equal(m.locale(), 'fr', 'instance locale reset to global locale');
- });
- test('moment().locale with missing key doesn\'t change locale', function (assert) {
- assert.equal(moment().locale('boo').localeData(), moment.localeData(),
- 'preserve global locale in case of bad locale id');
- });
- test('moment().lang with missing key doesn\'t change locale', function (assert) {
- test.expectedDeprecations('moment().lang()');
- assert.equal(moment().lang('boo').localeData(), moment.localeData(),
- 'preserve global locale in case of bad locale id');
- });
- // TODO: Enable this after fixing pl months parse hack hack
- // test('monthsParseExact', function (assert) {
- // var locale = 'test-months-parse-exact';
- // moment.defineLocale(locale, {
- // monthsParseExact: true,
- // months: 'A_AA_AAA_B_B B_BB B_C_C-C_C,C2C_D_D+D_D`D*D'.split('_'),
- // monthsShort: 'E_EE_EEE_F_FF_FFF_G_GG_GGG_H_HH_HHH'.split('_')
- // });
- // assert.equal(moment('A', 'MMMM', true).month(), 0, 'parse long month 0 with MMMM');
- // assert.equal(moment('AA', 'MMMM', true).month(), 1, 'parse long month 1 with MMMM');
- // assert.equal(moment('AAA', 'MMMM', true).month(), 2, 'parse long month 2 with MMMM');
- // assert.equal(moment('B B', 'MMMM', true).month(), 4, 'parse long month 4 with MMMM');
- // assert.equal(moment('BB B', 'MMMM', true).month(), 5, 'parse long month 5 with MMMM');
- // assert.equal(moment('C-C', 'MMMM', true).month(), 7, 'parse long month 7 with MMMM');
- // assert.equal(moment('C,C2C', 'MMMM', true).month(), 8, 'parse long month 8 with MMMM');
- // assert.equal(moment('D+D', 'MMMM', true).month(), 10, 'parse long month 10 with MMMM');
- // assert.equal(moment('D`D*D', 'MMMM', true).month(), 11, 'parse long month 11 with MMMM');
- // assert.equal(moment('E', 'MMM', true).month(), 0, 'parse long month 0 with MMM');
- // assert.equal(moment('EE', 'MMM', true).month(), 1, 'parse long month 1 with MMM');
- // assert.equal(moment('EEE', 'MMM', true).month(), 2, 'parse long month 2 with MMM');
- // assert.equal(moment('A', 'MMM').month(), 0, 'non-strict parse long month 0 with MMM');
- // assert.equal(moment('AA', 'MMM').month(), 1, 'non-strict parse long month 1 with MMM');
- // assert.equal(moment('AAA', 'MMM').month(), 2, 'non-strict parse long month 2 with MMM');
- // assert.equal(moment('E', 'MMMM').month(), 0, 'non-strict parse short month 0 with MMMM');
- // assert.equal(moment('EE', 'MMMM').month(), 1, 'non-strict parse short month 1 with MMMM');
- // assert.equal(moment('EEE', 'MMMM').month(), 2, 'non-strict parse short month 2 with MMMM');
- // });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('locale inheritance');
- test('calendar', function (assert) {
- moment.defineLocale('base-cal', {
- calendar : {
- sameDay: '[Today at] HH:mm',
- nextDay: '[Tomorrow at] HH:mm',
- nextWeek: '[Next week at] HH:mm',
- lastDay: '[Yesterday at] HH:mm',
- lastWeek: '[Last week at] HH:mm',
- sameElse: '[whatever]'
- }
- });
- moment.defineLocale('child-cal', {
- parentLocale: 'base-cal',
- calendar: {
- sameDay: '[Today] HH:mm',
- nextDay: '[Tomorrow] HH:mm',
- nextWeek: '[Next week] HH:mm'
- }
- });
- moment.locale('child-cal');
- var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601);
- assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today 15:00', 'today uses child version');
- assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow 12:00', 'tomorrow uses child version');
- assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week 12:00', 'next week uses child version');
- assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version');
- assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version');
- assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -');
- assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +');
- });
- test('missing', function (assert) {
- moment.defineLocale('base-cal-2', {
- calendar: {
- sameDay: '[Today at] HH:mm',
- nextDay: '[Tomorrow at] HH:mm',
- nextWeek: '[Next week at] HH:mm',
- lastDay: '[Yesterday at] HH:mm',
- lastWeek: '[Last week at] HH:mm',
- sameElse: '[whatever]'
- }
- });
- moment.defineLocale('child-cal-2', {
- parentLocale: 'base-cal-2'
- });
- moment.locale('child-cal-2');
- var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601);
- assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today at 15:00', 'today uses parent version');
- assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow at 12:00', 'tomorrow uses parent version');
- assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week at 12:00', 'next week uses parent version');
- assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version');
- assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version');
- assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -');
- assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +');
- });
- // Test function vs obj both directions
- test('long date format', function (assert) {
- moment.defineLocale('base-ldf', {
- longDateFormat : {
- LTS : 'h:mm:ss A',
- LT : 'h:mm A',
- L : 'MM/DD/YYYY',
- LL : 'MMMM D, YYYY',
- LLL : 'MMMM D, YYYY h:mm A',
- LLLL : 'dddd, MMMM D, YYYY h:mm A'
- }
- });
- moment.defineLocale('child-ldf', {
- parentLocale: 'base-ldf',
- longDateFormat: {
- LLL : '[child] MMMM D, YYYY h:mm A',
- LLLL : '[child] dddd, MMMM D, YYYY h:mm A'
- }
- });
- moment.locale('child-ldf');
- var anchor = moment.utc('2015-09-06T12:34:56', moment.ISO_8601);
- assert.equal(anchor.format('LTS'), '12:34:56 PM', 'LTS uses base');
- assert.equal(anchor.format('LT'), '12:34 PM', 'LT uses base');
- assert.equal(anchor.format('L'), '09/06/2015', 'L uses base');
- assert.equal(anchor.format('l'), '9/6/2015', 'l uses base');
- assert.equal(anchor.format('LL'), 'September 6, 2015', 'LL uses base');
- assert.equal(anchor.format('ll'), 'Sep 6, 2015', 'll uses base');
- assert.equal(anchor.format('LLL'), 'child September 6, 2015 12:34 PM', 'LLL uses child');
- assert.equal(anchor.format('lll'), 'child Sep 6, 2015 12:34 PM', 'lll uses child');
- assert.equal(anchor.format('LLLL'), 'child Sunday, September 6, 2015 12:34 PM', 'LLLL uses child');
- assert.equal(anchor.format('llll'), 'child Sun, Sep 6, 2015 12:34 PM', 'llll uses child');
- });
- test('ordinal', function (assert) {
- moment.defineLocale('base-ordinal-1', {
- ordinal : '%dx'
- });
- moment.defineLocale('child-ordinal-1', {
- parentLocale: 'base-ordinal-1',
- ordinal : '%dy'
- });
- assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string');
- moment.defineLocale('base-ordinal-2', {
- ordinal : '%dx'
- });
- moment.defineLocale('child-ordinal-2', {
- parentLocale: 'base-ordinal-2',
- ordinal : function (num) {
- return num + 'y';
- }
- });
- assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child function');
- moment.defineLocale('base-ordinal-3', {
- ordinal : function (num) {
- return num + 'x';
- }
- });
- moment.defineLocale('child-ordinal-3', {
- parentLocale: 'base-ordinal-3',
- ordinal : '%dy'
- });
- assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string (overwrite parent function)');
- });
- test('ordinal parse', function (assert) {
- moment.defineLocale('base-ordinal-parse-1', {
- dayOfMonthOrdinalParse : /\d{1,2}x/
- });
- moment.defineLocale('child-ordinal-parse-1', {
- parentLocale: 'base-ordinal-parse-1',
- dayOfMonthOrdinalParse : /\d{1,2}y/
- });
- assert.ok(moment.utc('2015-01-1y', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child');
- moment.defineLocale('base-ordinal-parse-2', {
- dayOfMonthOrdinalParse : /\d{1,2}x/
- });
- moment.defineLocale('child-ordinal-parse-2', {
- parentLocale: 'base-ordinal-parse-2',
- dayOfMonthOrdinalParse : /\d{1,2}/
- });
- assert.ok(moment.utc('2015-01-1', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child (default)');
- });
- test('months', function (assert) {
- moment.defineLocale('base-months', {
- months : 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split('_')
- });
- moment.defineLocale('child-months', {
- parentLocale: 'base-months',
- months : 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelveth '.split('_')
- });
- assert.ok(moment.utc('2015-01-01', 'YYYY-MM-DD').format('MMMM'), 'First', 'months uses child');
- });
- test('define child locale before parent', function (assert) {
- moment.defineLocale('months-x', null);
- moment.defineLocale('base-months-x', null);
- moment.defineLocale('months-x', {
- parentLocale: 'base-months-x',
- months : 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelveth '.split('_')
- });
- assert.equal(moment.locale(), 'en', 'failed to set a locale requiring missing parent');
- moment.defineLocale('base-months-x', {
- months : 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split('_')
- });
- assert.equal(moment.locale(), 'base-months-x', 'defineLocale should also set the locale (regardless of child locales)');
- assert.equal(moment().locale('months-x').month(0).format('MMMM'), 'First', 'loading child before parent locale works');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('locale update');
- test('calendar', function (assert) {
- moment.defineLocale('cal', null);
- moment.defineLocale('cal', {
- calendar : {
- sameDay: '[Today at] HH:mm',
- nextDay: '[Tomorrow at] HH:mm',
- nextWeek: '[Next week at] HH:mm',
- lastDay: '[Yesterday at] HH:mm',
- lastWeek: '[Last week at] HH:mm',
- sameElse: '[whatever]'
- }
- });
- moment.updateLocale('cal', {
- calendar: {
- sameDay: '[Today] HH:mm',
- nextDay: '[Tomorrow] HH:mm',
- nextWeek: '[Next week] HH:mm'
- }
- });
- moment.locale('cal');
- var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601);
- assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today 15:00', 'today uses child version');
- assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow 12:00', 'tomorrow uses child version');
- assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week 12:00', 'next week uses child version');
- assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version');
- assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version');
- assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -');
- assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +');
- });
- test('missing', function (assert) {
- moment.defineLocale('cal-2', null);
- moment.defineLocale('cal-2', {
- calendar: {
- sameDay: '[Today at] HH:mm',
- nextDay: '[Tomorrow at] HH:mm',
- nextWeek: '[Next week at] HH:mm',
- lastDay: '[Yesterday at] HH:mm',
- lastWeek: '[Last week at] HH:mm',
- sameElse: '[whatever]'
- }
- });
- moment.updateLocale('cal-2', {
- });
- moment.locale('cal-2');
- var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601);
- assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today at 15:00', 'today uses parent version');
- assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow at 12:00', 'tomorrow uses parent version');
- assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week at 12:00', 'next week uses parent version');
- assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version');
- assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version');
- assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -');
- assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +');
- });
- // Test function vs obj both directions
- test('long date format', function (assert) {
- moment.defineLocale('ldf', null);
- moment.defineLocale('ldf', {
- longDateFormat : {
- LTS : 'h:mm:ss A',
- LT : 'h:mm A',
- L : 'MM/DD/YYYY',
- LL : 'MMMM D, YYYY',
- LLL : 'MMMM D, YYYY h:mm A',
- LLLL : 'dddd, MMMM D, YYYY h:mm A'
- }
- });
- moment.updateLocale('ldf', {
- longDateFormat: {
- LLL : '[child] MMMM D, YYYY h:mm A',
- LLLL : '[child] dddd, MMMM D, YYYY h:mm A'
- }
- });
- moment.locale('ldf');
- var anchor = moment.utc('2015-09-06T12:34:56', moment.ISO_8601);
- assert.equal(anchor.format('LTS'), '12:34:56 PM', 'LTS uses base');
- assert.equal(anchor.format('LT'), '12:34 PM', 'LT uses base');
- assert.equal(anchor.format('L'), '09/06/2015', 'L uses base');
- assert.equal(anchor.format('l'), '9/6/2015', 'l uses base');
- assert.equal(anchor.format('LL'), 'September 6, 2015', 'LL uses base');
- assert.equal(anchor.format('ll'), 'Sep 6, 2015', 'll uses base');
- assert.equal(anchor.format('LLL'), 'child September 6, 2015 12:34 PM', 'LLL uses child');
- assert.equal(anchor.format('lll'), 'child Sep 6, 2015 12:34 PM', 'lll uses child');
- assert.equal(anchor.format('LLLL'), 'child Sunday, September 6, 2015 12:34 PM', 'LLLL uses child');
- assert.equal(anchor.format('llll'), 'child Sun, Sep 6, 2015 12:34 PM', 'llll uses child');
- });
- test('ordinal', function (assert) {
- moment.defineLocale('ordinal-1', null);
- moment.defineLocale('ordinal-1', {
- ordinal : '%dx'
- });
- moment.updateLocale('ordinal-1', {
- ordinal : '%dy'
- });
- assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string');
- moment.defineLocale('ordinal-2', null);
- moment.defineLocale('ordinal-2', {
- ordinal : '%dx'
- });
- moment.updateLocale('ordinal-2', {
- ordinal : function (num) {
- return num + 'y';
- }
- });
- assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child function');
- moment.defineLocale('ordinal-3', null);
- moment.defineLocale('ordinal-3', {
- ordinal : function (num) {
- return num + 'x';
- }
- });
- moment.updateLocale('ordinal-3', {
- ordinal : '%dy'
- });
- assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string (overwrite parent function)');
- });
- test('ordinal parse', function (assert) {
- moment.defineLocale('ordinal-parse-1', null);
- moment.defineLocale('ordinal-parse-1', {
- dayOfMonthOrdinalParse : /\d{1,2}x/
- });
- moment.updateLocale('ordinal-parse-1', {
- dayOfMonthOrdinalParse : /\d{1,2}y/
- });
- assert.ok(moment.utc('2015-01-1y', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child');
- moment.defineLocale('ordinal-parse-2', null);
- moment.defineLocale('ordinal-parse-2', {
- dayOfMonthOrdinalParse : /\d{1,2}x/
- });
- moment.updateLocale('ordinal-parse-2', {
- dayOfMonthOrdinalParse : /\d{1,2}/
- });
- assert.ok(moment.utc('2015-01-1', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child (default)');
- });
- test('months', function (assert) {
- moment.defineLocale('months', null);
- moment.defineLocale('months', {
- months : 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split('_')
- });
- moment.updateLocale('months', {
- parentLocale: 'base-months',
- months : 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelveth '.split('_')
- });
- assert.ok(moment.utc('2015-01-01', 'YYYY-MM-DD').format('MMMM'), 'First', 'months uses child');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('min max');
- test('min', function (assert) {
- var now = moment(),
- future = now.clone().add(1, 'month'),
- past = now.clone().subtract(1, 'month'),
- invalid = moment.invalid();
- assert.equal(moment.min(now, future, past), past, 'min(now, future, past)');
- assert.equal(moment.min(future, now, past), past, 'min(future, now, past)');
- assert.equal(moment.min(future, past, now), past, 'min(future, past, now)');
- assert.equal(moment.min(past, future, now), past, 'min(past, future, now)');
- assert.equal(moment.min(now, past), past, 'min(now, past)');
- assert.equal(moment.min(past, now), past, 'min(past, now)');
- assert.equal(moment.min(now), now, 'min(now, past)');
- assert.equal(moment.min([now, future, past]), past, 'min([now, future, past])');
- assert.equal(moment.min([now, past]), past, 'min(now, past)');
- assert.equal(moment.min([now]), now, 'min(now)');
- assert.equal(moment.min([now, invalid]), invalid, 'min(now, invalid)');
- assert.equal(moment.min([invalid, now]), invalid, 'min(invalid, now)');
- });
- test('max', function (assert) {
- var now = moment(),
- future = now.clone().add(1, 'month'),
- past = now.clone().subtract(1, 'month'),
- invalid = moment.invalid();
- assert.equal(moment.max(now, future, past), future, 'max(now, future, past)');
- assert.equal(moment.max(future, now, past), future, 'max(future, now, past)');
- assert.equal(moment.max(future, past, now), future, 'max(future, past, now)');
- assert.equal(moment.max(past, future, now), future, 'max(past, future, now)');
- assert.equal(moment.max(now, past), now, 'max(now, past)');
- assert.equal(moment.max(past, now), now, 'max(past, now)');
- assert.equal(moment.max(now), now, 'max(now, past)');
- assert.equal(moment.max([now, future, past]), future, 'max([now, future, past])');
- assert.equal(moment.max([now, past]), now, 'max(now, past)');
- assert.equal(moment.max([now]), now, 'max(now)');
- assert.equal(moment.max([now, invalid]), invalid, 'max(now, invalid)');
- assert.equal(moment.max([invalid, now]), invalid, 'max(invalid, now)');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('mutable');
- test('manipulation methods', function (assert) {
- var m = moment();
- assert.equal(m, m.year(2011), 'year() should be mutable');
- assert.equal(m, m.month(1), 'month() should be mutable');
- assert.equal(m, m.hours(7), 'hours() should be mutable');
- assert.equal(m, m.minutes(33), 'minutes() should be mutable');
- assert.equal(m, m.seconds(44), 'seconds() should be mutable');
- assert.equal(m, m.milliseconds(55), 'milliseconds() should be mutable');
- assert.equal(m, m.day(2), 'day() should be mutable');
- assert.equal(m, m.startOf('week'), 'startOf() should be mutable');
- assert.equal(m, m.add(1, 'days'), 'add() should be mutable');
- assert.equal(m, m.subtract(2, 'years'), 'subtract() should be mutable');
- assert.equal(m, m.local(), 'local() should be mutable');
- assert.equal(m, m.utc(), 'utc() should be mutable');
- });
- test('non mutable methods', function (assert) {
- var m = moment();
- assert.notEqual(m, m.clone(), 'clone() should not be mutable');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('normalize units');
- test('normalize units', function (assert) {
- var fullKeys = ['year', 'quarter', 'month', 'isoWeek', 'week', 'day', 'hour', 'minute', 'second', 'millisecond', 'date', 'dayOfYear', 'weekday', 'isoWeekday', 'weekYear', 'isoWeekYear'],
- aliases = ['y', 'Q', 'M', 'W', 'w', 'd', 'h', 'm', 's', 'ms', 'D', 'DDD', 'e', 'E', 'gg', 'GG'],
- length = fullKeys.length,
- fullKey,
- fullKeyCaps,
- fullKeyPlural,
- fullKeyCapsPlural,
- fullKeyLower,
- alias,
- index;
- for (index = 0; index < length; index += 1) {
- fullKey = fullKeys[index];
- fullKeyCaps = fullKey.toUpperCase();
- fullKeyLower = fullKey.toLowerCase();
- fullKeyPlural = fullKey + 's';
- fullKeyCapsPlural = fullKeyCaps + 's';
- alias = aliases[index];
- assert.equal(moment.normalizeUnits(fullKey), fullKey, 'Testing full key ' + fullKey);
- assert.equal(moment.normalizeUnits(fullKeyCaps), fullKey, 'Testing full key capitalised ' + fullKey);
- assert.equal(moment.normalizeUnits(fullKeyPlural), fullKey, 'Testing full key plural ' + fullKey);
- assert.equal(moment.normalizeUnits(fullKeyCapsPlural), fullKey, 'Testing full key capitalised and plural ' + fullKey);
- assert.equal(moment.normalizeUnits(alias), fullKey, 'Testing alias ' + fullKey);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('now');
- test('now', function (assert) {
- var startOfTest = new Date().valueOf(),
- momentNowTime = moment.now(),
- afterMomentCreationTime = new Date().valueOf();
- assert.ok(startOfTest <= momentNowTime, 'moment now() time should be now, not in the past');
- assert.ok(momentNowTime <= afterMomentCreationTime, 'moment now() time should be now, not in the future');
- });
- test('now - Date mocked', function (assert) {
- // We need to test mocking the global Date object, so disable 'Read Only' jshint check
- /* jshint -W020 */
- var RealDate = Date,
- customTimeMs = moment('2015-01-01T01:30:00.000Z').valueOf();
- function MockDate() {
- return new RealDate(customTimeMs);
- }
- MockDate.now = function () {
- return new MockDate().valueOf();
- };
- MockDate.prototype = RealDate.prototype;
- Date = MockDate;
- try {
- assert.equal(moment().valueOf(), customTimeMs, 'moment now() time should use the global Date object');
- } finally {
- Date = RealDate;
- }
- });
- test('now - custom value', function (assert) {
- var customTimeStr = '2015-01-01T01:30:00.000Z',
- customTime = moment(customTimeStr, moment.ISO_8601).valueOf(),
- oldFn = moment.now;
- moment.now = function () {
- return customTime;
- };
- try {
- assert.equal(moment().toISOString(), customTimeStr, 'moment() constructor should use the function defined by moment.now, but it did not');
- assert.equal(moment.utc().toISOString(), customTimeStr, 'moment() constructor should use the function defined by moment.now, but it did not');
- } finally {
- moment.now = oldFn;
- }
- });
- test('empty object, empty array', function (assert) {
- function assertIsNow(gen, msg) {
- var before = +(new Date()),
- mid = gen(),
- after = +(new Date());
- assert.ok(before <= +mid && +mid <= after, 'should be now : ' + msg);
- }
- assertIsNow(function () {
- return moment();
- }, 'moment()');
- assertIsNow(function () {
- return moment([]);
- }, 'moment([])');
- assertIsNow(function () {
- return moment({});
- }, 'moment({})');
- assertIsNow(function () {
- return moment.utc();
- }, 'moment.utc()');
- assertIsNow(function () {
- return moment.utc([]);
- }, 'moment.utc([])');
- assertIsNow(function () {
- return moment.utc({});
- }, 'moment.utc({})');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('parsing flags');
- function flags () {
- return moment.apply(null, arguments).parsingFlags();
- }
- test('overflow with array', function (assert) {
- //months
- assert.equal(flags([2010, 0]).overflow, -1, 'month 0 valid');
- assert.equal(flags([2010, 1]).overflow, -1, 'month 1 valid');
- assert.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid');
- assert.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid');
- //days
- assert.equal(flags([2010, 1, 16]).overflow, -1, 'date valid');
- assert.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid');
- assert.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid');
- assert.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid');
- assert.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid');
- assert.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid');
- //hours
- assert.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid');
- assert.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid');
- assert.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid');
- assert.equal(flags([2010, 1, 1, 25]).overflow, 3, 'hour 25 invalid');
- assert.equal(flags([2010, 1, 1, 24, 1]).overflow, 3, 'hour 24:01 invalid');
- //minutes
- assert.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid');
- assert.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid');
- assert.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid');
- assert.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid');
- //seconds
- assert.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid');
- assert.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid');
- assert.equal(flags([2010, 1, 1, 8, 15, -1]).overflow, 5, 'second -1 invalid');
- assert.equal(flags([2010, 1, 1, 8, 15, 60]).overflow, 5, 'second 60 invalid');
- //milliseconds
- assert.equal(flags([2010, 1, 1, 8, 15, 12, 345]).overflow, -1, 'millisecond valid');
- assert.equal(flags([2010, 1, 1, 8, 15, 12, 0]).overflow, -1, 'millisecond 0 valid');
- assert.equal(flags([2010, 1, 1, 8, 15, 12, -1]).overflow, 6, 'millisecond -1 invalid');
- assert.equal(flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, 6, 'millisecond 1000 invalid');
- // 24 hrs
- assert.equal(flags([2010, 1, 1, 24, 0, 0, 0]).overflow, -1, '24:00:00.000 is fine');
- assert.equal(flags([2010, 1, 1, 24, 1, 0, 0]).overflow, 3, '24:01:00.000 is wrong hour');
- assert.equal(flags([2010, 1, 1, 24, 0, 1, 0]).overflow, 3, '24:00:01.000 is wrong hour');
- assert.equal(flags([2010, 1, 1, 24, 0, 0, 1]).overflow, 3, '24:00:00.001 is wrong hour');
- });
- test('overflow without format', function (assert) {
- //months
- assert.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid');
- assert.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid');
- assert.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid');
- //days
- assert.equal(flags('2010-01-16', 'YYYY-MM-DD').overflow, -1, 'date 16 valid');
- assert.equal(flags('2010-01-0', 'YYYY-MM-DD').overflow, 2, 'date 0 invalid');
- assert.equal(flags('2010-01-32', 'YYYY-MM-DD').overflow, 2, 'date 32 invalid');
- assert.equal(flags('2012-02-29', 'YYYY-MM-DD').overflow, -1, 'date leap year valid');
- assert.equal(flags('2010-02-29', 'YYYY-MM-DD').overflow, 2, 'date leap year invalid');
- //days of the year
- assert.equal(flags('2010 300', 'YYYY DDDD').overflow, -1, 'day 300 of year valid');
- assert.equal(flags('2010 365', 'YYYY DDDD').overflow, -1, 'day 365 of year valid');
- assert.equal(flags('2010 366', 'YYYY DDDD').overflow, 2, 'day 366 of year invalid');
- assert.equal(flags('2012 366', 'YYYY DDDD').overflow, -1, 'day 366 of leap year valid');
- assert.equal(flags('2012 367', 'YYYY DDDD').overflow, 2, 'day 367 of leap year invalid');
- //hours
- assert.equal(flags('08', 'HH').overflow, -1, 'hour valid');
- assert.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid');
- assert.equal(flags('25', 'HH').overflow, 3, 'hour 25 invalid');
- assert.equal(flags('24:01', 'HH:mm').overflow, 3, 'hour 24:01 invalid');
- //minutes
- assert.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid');
- assert.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid');
- assert.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid');
- //seconds
- assert.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid');
- assert.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid');
- assert.equal(flags('08:15:60', 'HH:mm:ss').overflow, 5, 'second 60 invalid');
- //milliseconds
- assert.equal(flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond valid');
- assert.equal(flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 0 valid');
- //this is OK because we don't match the last digit, so it's 100 ms
- assert.equal(flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 1000 actually valid');
- });
- test('extra tokens', function (assert) {
- assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, [], 'nothing extra');
- assert.deepEqual(flags('1982-05', 'YYYY-MM-DD').unusedTokens, ['DD'], 'extra formatting token');
- assert.deepEqual(flags('1982', 'YYYY-MM-DD').unusedTokens, ['MM', 'DD'], 'multiple extra formatting tokens');
- assert.deepEqual(flags('1982-05', 'YYYY-MM-').unusedTokens, [], 'extra non-formatting token');
- assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD').unusedTokens, ['DD'], 'non-extra non-formatting token');
- assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, [], 'different non-formatting token');
- });
- test('extra tokens strict', function (assert) {
- assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, [], 'nothing extra');
- assert.deepEqual(flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, ['-', 'DD'], 'extra formatting token');
- assert.deepEqual(flags('1982', 'YYYY-MM-DD', true).unusedTokens, ['-', 'MM', '-', 'DD'], 'multiple extra formatting tokens');
- assert.deepEqual(flags('1982-05', 'YYYY-MM-', true).unusedTokens, ['-'], 'extra non-formatting token');
- assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, ['DD'], 'non-extra non-formatting token');
- assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, ['-', '-'], 'different non-formatting token');
- });
- test('unused input', function (assert) {
- assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedInput, [], 'normal input');
- assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, [' this is more stuff'], 'trailing nonsense');
- assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, [' 09:30'], ['trailing legit-looking input']);
- assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, [], 'junk that actually gets matched');
- assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, ['stuff at beginning '], 'leading junk');
- assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD').unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk');
- });
- test('unused input strict', function (assert) {
- assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, [], 'normal input');
- assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, [' this is more stuff'], 'trailing nonsense');
- assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, [' 09:30'], ['trailing legit-looking input']);
- assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true).unusedInput, [], 'junk that actually gets matched');
- assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, ['stuff at beginning '], 'leading junk');
- assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true).unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk');
- });
- test('chars left over', function (assert) {
- assert.equal(flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, 0, 'normal input');
- assert.equal(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, ' this is more stuff'.length, 'trailing nonsense');
- assert.equal(flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, ' 09:30'.length, 'trailing legit-looking input');
- assert.equal(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, 'stuff at beginning '.length, 'leading junk');
- assert.equal(flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, [' junk ', ' more junk'].join('').length, 'interstitial junk');
- assert.equal(flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, ['stuff at beginning ', ' junk ', ' more junk'].join('').length, 'leading and interstitial junk');
- });
- test('empty', function (assert) {
- assert.equal(flags('1982-05-25', 'YYYY-MM-DD').empty, false, 'normal input');
- assert.equal(flags('nothing here', 'YYYY-MM-DD').empty, true, 'pure garbage');
- assert.equal(flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, false, 'only mostly garbage');
- assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string');
- assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string');
- });
- test('null', function (assert) {
- assert.equal(flags('1982-05-25', 'YYYY-MM-DD').nullInput, false, 'normal input');
- assert.equal(flags(null).nullInput, true, 'just null');
- assert.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format');
- });
- test('invalid month', function (assert) {
- assert.equal(flags('1982 May', 'YYYY MMMM').invalidMonth, null, 'normal input');
- assert.equal(flags('1982 Laser', 'YYYY MMMM').invalidMonth, 'Laser', 'bad month name');
- });
- test('empty format array', function (assert) {
- assert.equal(flags('1982 May', ['YYYY MMM']).invalidFormat, false, 'empty format array');
- assert.equal(flags('1982 May', []).invalidFormat, true, 'empty format array');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- var symbolMap = {
- '1': '!',
- '2': '@',
- '3': '#',
- '4': '$',
- '5': '%',
- '6': '^',
- '7': '&',
- '8': '*',
- '9': '(',
- '0': ')'
- };
- var numberMap = {
- '!': '1',
- '@': '2',
- '#': '3',
- '$': '4',
- '%': '5',
- '^': '6',
- '&': '7',
- '*': '8',
- '(': '9',
- ')': '0'
- };
- module$1('preparse and postformat', {
- setup: function () {
- moment.locale('symbol', {
- preparse: function (string) {
- return string.replace(/[!@#$%\^&*()]/g, function (match) {
- return numberMap[match];
- });
- },
- postformat: function (string) {
- return string.replace(/\d/g, function (match) {
- return symbolMap[match];
- });
- }
- });
- },
- teardown: function () {
- moment.defineLocale('symbol', null);
- }
- });
- test('transform', function (assert) {
- assert.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, 'preparse string + format');
- assert.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, 'preparse ISO8601 string');
- assert.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', 'postformat');
- });
- test('transform from', function (assert) {
- var start = moment([2007, 1, 28]);
- assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '@ minutes', 'postformat should work on moment.fn.from');
- assert.equal(moment().add(6, 'd').fromNow(true), '^ days', 'postformat should work on moment.fn.fromNow');
- assert.equal(moment.duration(10, 'h').humanize(), '!) hours', 'postformat should work on moment.duration.fn.humanize');
- });
- test('calendar day', function (assert) {
- var a = moment().hours(12).minutes(0).seconds(0);
- assert.equal(moment(a).calendar(), 'Today at !@:)) PM', 'today at the same time');
- assert.equal(moment(a).add({m: 25}).calendar(), 'Today at !@:@% PM', 'Now plus 25 min');
- assert.equal(moment(a).add({h: 1}).calendar(), 'Today at !:)) PM', 'Now plus 1 hour');
- assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at !@:)) PM', 'tomorrow at the same time');
- assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at !!:)) AM', 'Now minus 1 hour');
- assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at !@:)) PM', 'yesterday at the same time');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('quarter');
- test('library quarter getter', function (assert) {
- assert.equal(moment([1985, 1, 4]).quarter(), 1, 'Feb 4 1985 is Q1');
- assert.equal(moment([2029, 8, 18]).quarter(), 3, 'Sep 18 2029 is Q3');
- assert.equal(moment([2013, 3, 24]).quarter(), 2, 'Apr 24 2013 is Q2');
- assert.equal(moment([2015, 2, 5]).quarter(), 1, 'Mar 5 2015 is Q1');
- assert.equal(moment([1970, 0, 2]).quarter(), 1, 'Jan 2 1970 is Q1');
- assert.equal(moment([2001, 11, 12]).quarter(), 4, 'Dec 12 2001 is Q4');
- assert.equal(moment([2000, 0, 2]).quarter(), 1, 'Jan 2 2000 is Q1');
- });
- test('quarter setter singular', function (assert) {
- var m = moment([2014, 4, 11]);
- assert.equal(m.quarter(2).month(), 4, 'set same quarter');
- assert.equal(m.quarter(3).month(), 7, 'set 3rd quarter');
- assert.equal(m.quarter(1).month(), 1, 'set 1st quarter');
- assert.equal(m.quarter(4).month(), 10, 'set 4th quarter');
- });
- test('quarter setter plural', function (assert) {
- var m = moment([2014, 4, 11]);
- assert.equal(m.quarters(2).month(), 4, 'set same quarter');
- assert.equal(m.quarters(3).month(), 7, 'set 3rd quarter');
- assert.equal(m.quarters(1).month(), 1, 'set 1st quarter');
- assert.equal(m.quarters(4).month(), 10, 'set 4th quarter');
- });
- test('quarter setter programmatic', function (assert) {
- var m = moment([2014, 4, 11]);
- assert.equal(m.set('quarter', 2).month(), 4, 'set same quarter');
- assert.equal(m.set('quarter', 3).month(), 7, 'set 3rd quarter');
- assert.equal(m.set('quarter', 1).month(), 1, 'set 1st quarter');
- assert.equal(m.set('quarter', 4).month(), 10, 'set 4th quarter');
- });
- test('quarter setter programmatic plural', function (assert) {
- var m = moment([2014, 4, 11]);
- assert.equal(m.set('quarters', 2).month(), 4, 'set same quarter');
- assert.equal(m.set('quarters', 3).month(), 7, 'set 3rd quarter');
- assert.equal(m.set('quarters', 1).month(), 1, 'set 1st quarter');
- assert.equal(m.set('quarters', 4).month(), 10, 'set 4th quarter');
- });
- test('quarter setter programmatic abbr', function (assert) {
- var m = moment([2014, 4, 11]);
- assert.equal(m.set('Q', 2).month(), 4, 'set same quarter');
- assert.equal(m.set('Q', 3).month(), 7, 'set 3rd quarter');
- assert.equal(m.set('Q', 1).month(), 1, 'set 1st quarter');
- assert.equal(m.set('Q', 4).month(), 10, 'set 4th quarter');
- });
- test('quarter setter only month changes', function (assert) {
- var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4);
- assert.equal(m.year(), 2014, 'keep year');
- assert.equal(m.month(), 10, 'set month');
- assert.equal(m.date(), 11, 'keep date');
- assert.equal(m.hour(), 1, 'keep hour');
- assert.equal(m.minute(), 2, 'keep minutes');
- assert.equal(m.second(), 3, 'keep seconds');
- assert.equal(m.millisecond(), 4, 'keep milliseconds');
- });
- test('quarter setter bubble to next year', function (assert) {
- var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7);
- assert.equal(m.year(), 2015, 'year bubbled');
- assert.equal(m.month(), 7, 'set month');
- assert.equal(m.date(), 11, 'keep date');
- assert.equal(m.hour(), 1, 'keep hour');
- assert.equal(m.minute(), 2, 'keep minutes');
- assert.equal(m.second(), 3, 'keep seconds');
- assert.equal(m.millisecond(), 4, 'keep milliseconds');
- });
- test('quarter diff', function (assert) {
- assert.equal(moment('2014-01-01').diff(moment('2014-04-01'), 'quarter'),
- -1, 'diff -1 quarter');
- assert.equal(moment('2014-04-01').diff(moment('2014-01-01'), 'quarter'),
- 1, 'diff 1 quarter');
- assert.equal(moment('2014-05-01').diff(moment('2014-01-01'), 'quarter'),
- 1, 'diff 1 quarter');
- assert.ok(Math.abs((4 / 3) - moment('2014-05-01').diff(
- moment('2014-01-01'), 'quarter', true)) < 0.00001,
- 'diff 1 1/3 quarter');
- assert.equal(moment('2015-01-01').diff(moment('2014-01-01'), 'quarter'),
- 4, 'diff 4 quarters');
- });
- test('quarter setter bubble to previous year', function (assert) {
- var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3);
- assert.equal(m.year(), 2013, 'year bubbled');
- assert.equal(m.month(), 1, 'set month');
- assert.equal(m.date(), 11, 'keep date');
- assert.equal(m.hour(), 1, 'keep hour');
- assert.equal(m.minute(), 2, 'keep minutes');
- assert.equal(m.second(), 3, 'keep seconds');
- assert.equal(m.millisecond(), 4, 'keep milliseconds');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('relative time');
- test('default thresholds fromNow', function (assert) {
- var a = moment();
- // Seconds to minutes threshold
- a.subtract(44, 'seconds');
- assert.equal(a.fromNow(), 'a few seconds ago', 'Below default seconds to minutes threshold');
- a.subtract(1, 'seconds');
- assert.equal(a.fromNow(), 'a minute ago', 'Above default seconds to minutes threshold');
- // Minutes to hours threshold
- a = moment();
- a.subtract(44, 'minutes');
- assert.equal(a.fromNow(), '44 minutes ago', 'Below default minute to hour threshold');
- a.subtract(1, 'minutes');
- assert.equal(a.fromNow(), 'an hour ago', 'Above default minute to hour threshold');
- // Hours to days threshold
- a = moment();
- a.subtract(21, 'hours');
- assert.equal(a.fromNow(), '21 hours ago', 'Below default hours to day threshold');
- a.subtract(1, 'hours');
- assert.equal(a.fromNow(), 'a day ago', 'Above default hours to day threshold');
- // Days to month threshold
- a = moment();
- a.subtract(25, 'days');
- assert.equal(a.fromNow(), '25 days ago', 'Below default days to month (singular) threshold');
- a.subtract(1, 'days');
- assert.equal(a.fromNow(), 'a month ago', 'Above default days to month (singular) threshold');
- // months to year threshold
- a = moment();
- a.subtract(10, 'months');
- assert.equal(a.fromNow(), '10 months ago', 'Below default days to years threshold');
- a.subtract(1, 'month');
- assert.equal(a.fromNow(), 'a year ago', 'Above default days to years threshold');
- });
- test('default thresholds toNow', function (assert) {
- var a = moment();
- // Seconds to minutes threshold
- a.subtract(44, 'seconds');
- assert.equal(a.toNow(), 'in a few seconds', 'Below default seconds to minutes threshold');
- a.subtract(1, 'seconds');
- assert.equal(a.toNow(), 'in a minute', 'Above default seconds to minutes threshold');
- // Minutes to hours threshold
- a = moment();
- a.subtract(44, 'minutes');
- assert.equal(a.toNow(), 'in 44 minutes', 'Below default minute to hour threshold');
- a.subtract(1, 'minutes');
- assert.equal(a.toNow(), 'in an hour', 'Above default minute to hour threshold');
- // Hours to days threshold
- a = moment();
- a.subtract(21, 'hours');
- assert.equal(a.toNow(), 'in 21 hours', 'Below default hours to day threshold');
- a.subtract(1, 'hours');
- assert.equal(a.toNow(), 'in a day', 'Above default hours to day threshold');
- // Days to month threshold
- a = moment();
- a.subtract(25, 'days');
- assert.equal(a.toNow(), 'in 25 days', 'Below default days to month (singular) threshold');
- a.subtract(1, 'days');
- assert.equal(a.toNow(), 'in a month', 'Above default days to month (singular) threshold');
- // months to year threshold
- a = moment();
- a.subtract(10, 'months');
- assert.equal(a.toNow(), 'in 10 months', 'Below default days to years threshold');
- a.subtract(1, 'month');
- assert.equal(a.toNow(), 'in a year', 'Above default days to years threshold');
- });
- test('custom thresholds', function (assert) {
- var a;
- // Seconds to minute threshold, under 30
- moment.relativeTimeThreshold('s', 25);
- a = moment();
- a.subtract(24, 'seconds');
- assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom seconds to minute threshold, s < 30');
- a.subtract(1, 'seconds');
- assert.equal(a.fromNow(), 'a minute ago', 'Above custom seconds to minute threshold, s < 30');
- // Seconds to minutes threshold
- moment.relativeTimeThreshold('s', 55);
- a = moment();
- a.subtract(54, 'seconds');
- assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom seconds to minutes threshold');
- a.subtract(1, 'seconds');
- assert.equal(a.fromNow(), 'a minute ago', 'Above custom seconds to minutes threshold');
- moment.relativeTimeThreshold('s', 45);
- // A few seconds to seconds threshold
- moment.relativeTimeThreshold('ss', 3);
- a = moment();
- a.subtract(3, 'seconds');
- assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom a few seconds to seconds threshold');
- a.subtract(1, 'seconds');
- assert.equal(a.fromNow(), '4 seconds ago', 'Above custom a few seconds to seconds threshold');
- moment.relativeTimeThreshold('ss', 44);
- // Minutes to hours threshold
- moment.relativeTimeThreshold('m', 55);
- a = moment();
- a.subtract(54, 'minutes');
- assert.equal(a.fromNow(), '54 minutes ago', 'Below custom minutes to hours threshold');
- a.subtract(1, 'minutes');
- assert.equal(a.fromNow(), 'an hour ago', 'Above custom minutes to hours threshold');
- moment.relativeTimeThreshold('m', 45);
- // Hours to days threshold
- moment.relativeTimeThreshold('h', 24);
- a = moment();
- a.subtract(23, 'hours');
- assert.equal(a.fromNow(), '23 hours ago', 'Below custom hours to days threshold');
- a.subtract(1, 'hours');
- assert.equal(a.fromNow(), 'a day ago', 'Above custom hours to days threshold');
- moment.relativeTimeThreshold('h', 22);
- // Days to month threshold
- moment.relativeTimeThreshold('d', 28);
- a = moment();
- a.subtract(27, 'days');
- assert.equal(a.fromNow(), '27 days ago', 'Below custom days to month (singular) threshold');
- a.subtract(1, 'days');
- assert.equal(a.fromNow(), 'a month ago', 'Above custom days to month (singular) threshold');
- moment.relativeTimeThreshold('d', 26);
- // months to years threshold
- moment.relativeTimeThreshold('M', 9);
- a = moment();
- a.subtract(8, 'months');
- assert.equal(a.fromNow(), '8 months ago', 'Below custom days to years threshold');
- a.subtract(1, 'months');
- assert.equal(a.fromNow(), 'a year ago', 'Above custom days to years threshold');
- moment.relativeTimeThreshold('M', 11);
- });
- test('custom rounding', function (assert) {
- var roundingDefault = moment.relativeTimeRounding();
- // Round relative time evaluation down
- moment.relativeTimeRounding(Math.floor);
- moment.relativeTimeThreshold('s', 60);
- moment.relativeTimeThreshold('m', 60);
- moment.relativeTimeThreshold('h', 24);
- moment.relativeTimeThreshold('d', 27);
- moment.relativeTimeThreshold('M', 12);
- var a = moment.utc();
- a.subtract({minutes: 59, seconds: 59});
- assert.equal(a.toNow(), 'in 59 minutes', 'Round down towards the nearest minute');
- a = moment.utc();
- a.subtract({hours: 23, minutes: 59, seconds: 59});
- assert.equal(a.toNow(), 'in 23 hours', 'Round down towards the nearest hour');
- a = moment.utc();
- a.subtract({days: 26, hours: 23, minutes: 59});
- assert.equal(a.toNow(), 'in 26 days', 'Round down towards the nearest day (just under)');
- a = moment.utc();
- a.subtract({days: 27});
- assert.equal(a.toNow(), 'in a month', 'Round down towards the nearest day (just over)');
- a = moment.utc();
- a.subtract({days: 364});
- assert.equal(a.toNow(), 'in 11 months', 'Round down towards the nearest month');
- a = moment.utc();
- a.subtract({years: 1, days: 364});
- assert.equal(a.toNow(), 'in a year', 'Round down towards the nearest year');
- // Do not round relative time evaluation
- var retainValue = function (value) {
- return value.toFixed(3);
- };
- moment.relativeTimeRounding(retainValue);
- a = moment.utc();
- a.subtract({hours: 39});
- assert.equal(a.toNow(), 'in 1.625 days', 'Round down towards the nearest year');
- // Restore defaults
- moment.relativeTimeThreshold('s', 45);
- moment.relativeTimeThreshold('m', 45);
- moment.relativeTimeThreshold('h', 22);
- moment.relativeTimeThreshold('d', 26);
- moment.relativeTimeThreshold('M', 11);
- moment.relativeTimeRounding(roundingDefault);
- });
- test('retrieve rounding settings', function (assert) {
- moment.relativeTimeRounding(Math.round);
- var roundingFunction = moment.relativeTimeRounding();
- assert.equal(roundingFunction, Math.round, 'Can retrieve rounding setting');
- });
- test('retrieve threshold settings', function (assert) {
- moment.relativeTimeThreshold('m', 45);
- var minuteThreshold = moment.relativeTimeThreshold('m');
- assert.equal(minuteThreshold, 45, 'Can retrieve minute setting');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('start and end of units');
- test('start of year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 0, 'strip out the month');
- assert.equal(m.date(), 1, 'strip out the day');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of year', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 11, 'set the month');
- assert.equal(m.date(), 31, 'set the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of quarter', function (assert) {
- var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarter'),
- ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarters'),
- ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('Q');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.quarter(), 2, 'keep the quarter');
- assert.equal(m.month(), 3, 'strip out the month');
- assert.equal(m.date(), 1, 'strip out the day');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of quarter', function (assert) {
- var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarter'),
- ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarters'),
- ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('Q');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.quarter(), 2, 'keep the quarter');
- assert.equal(m.month(), 5, 'set the month');
- assert.equal(m.date(), 30, 'set the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of month', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 1, 'strip out the day');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of month', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 28, 'set the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of week', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 0, 'rolls back to January');
- assert.equal(m.day(), 0, 'set day of week');
- assert.equal(m.date(), 30, 'set correct date');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of week', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.day(), 6, 'set the day of the week');
- assert.equal(m.date(), 5, 'set the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of iso-week', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 0, 'rollback to January');
- assert.equal(m.isoWeekday(), 1, 'set day of iso-week');
- assert.equal(m.date(), 31, 'set correct date');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of iso-week', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.isoWeekday(), 7, 'set the day of the week');
- assert.equal(m.date(), 6, 'set the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of day', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of day', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of date', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('date'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('dates');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 0, 'strip out the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of date', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('date'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('dates');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 23, 'set the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of hour', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 3, 'keep the hours');
- assert.equal(m.minutes(), 0, 'strip out the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of hour', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 3, 'keep the hours');
- assert.equal(m.minutes(), 59, 'set the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of minute', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 3, 'keep the hours');
- assert.equal(m.minutes(), 4, 'keep the minutes');
- assert.equal(m.seconds(), 0, 'strip out the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of minute', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 3, 'keep the hours');
- assert.equal(m.minutes(), 4, 'keep the minutes');
- assert.equal(m.seconds(), 59, 'set the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('start of second', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 3, 'keep the hours');
- assert.equal(m.minutes(), 4, 'keep the minutes');
- assert.equal(m.seconds(), 5, 'keep the the seconds');
- assert.equal(m.milliseconds(), 0, 'strip out the milliseconds');
- });
- test('end of second', function (assert) {
- var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'),
- ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'),
- ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s');
- assert.equal(+m, +ms, 'Plural or singular should work');
- assert.equal(+m, +ma, 'Full or abbreviated should work');
- assert.equal(m.year(), 2011, 'keep the year');
- assert.equal(m.month(), 1, 'keep the month');
- assert.equal(m.date(), 2, 'keep the day');
- assert.equal(m.hours(), 3, 'keep the hours');
- assert.equal(m.minutes(), 4, 'keep the minutes');
- assert.equal(m.seconds(), 5, 'keep the seconds');
- assert.equal(m.milliseconds(), 999, 'set the seconds');
- });
- test('startOf across DST +1', function (assert) {
- var oldUpdateOffset = moment.updateOffset,
- // Based on a real story somewhere in America/Los_Angeles
- dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(),
- m;
- moment.updateOffset = function (mom, keepTime) {
- if (mom.isBefore(dstAt)) {
- mom.utcOffset(-8, keepTime);
- } else {
- mom.utcOffset(-7, keepTime);
- }
- };
- m = moment('2014-03-15T00:00:00-07:00').parseZone();
- m.startOf('y');
- assert.equal(m.format(), '2014-01-01T00:00:00-08:00', 'startOf(\'year\') across +1');
- m = moment('2014-03-15T00:00:00-07:00').parseZone();
- m.startOf('M');
- assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'startOf(\'month\') across +1');
- m = moment('2014-03-09T09:00:00-07:00').parseZone();
- m.startOf('d');
- assert.equal(m.format(), '2014-03-09T00:00:00-08:00', 'startOf(\'day\') across +1');
- m = moment('2014-03-09T03:05:00-07:00').parseZone();
- m.startOf('h');
- assert.equal(m.format(), '2014-03-09T03:00:00-07:00', 'startOf(\'hour\') after +1');
- m = moment('2014-03-09T01:35:00-08:00').parseZone();
- m.startOf('h');
- assert.equal(m.format(), '2014-03-09T01:00:00-08:00', 'startOf(\'hour\') before +1');
- // There is no such time as 2:30-7 to try startOf('hour') across that
- moment.updateOffset = oldUpdateOffset;
- });
- test('startOf across DST -1', function (assert) {
- var oldUpdateOffset = moment.updateOffset,
- // Based on a real story somewhere in America/Los_Angeles
- dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(),
- m;
- moment.updateOffset = function (mom, keepTime) {
- if (mom.isBefore(dstAt)) {
- mom.utcOffset(-7, keepTime);
- } else {
- mom.utcOffset(-8, keepTime);
- }
- };
- m = moment('2014-11-15T00:00:00-08:00').parseZone();
- m.startOf('y');
- assert.equal(m.format(), '2014-01-01T00:00:00-07:00', 'startOf(\'year\') across -1');
- m = moment('2014-11-15T00:00:00-08:00').parseZone();
- m.startOf('M');
- assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'startOf(\'month\') across -1');
- m = moment('2014-11-02T09:00:00-08:00').parseZone();
- m.startOf('d');
- assert.equal(m.format(), '2014-11-02T00:00:00-07:00', 'startOf(\'day\') across -1');
- // note that utc offset is -8
- m = moment('2014-11-02T01:30:00-08:00').parseZone();
- m.startOf('h');
- assert.equal(m.format(), '2014-11-02T01:00:00-08:00', 'startOf(\'hour\') after +1');
- // note that utc offset is -7
- m = moment('2014-11-02T01:30:00-07:00').parseZone();
- m.startOf('h');
- assert.equal(m.format(), '2014-11-02T01:00:00-07:00', 'startOf(\'hour\') before +1');
- moment.updateOffset = oldUpdateOffset;
- });
- test('endOf millisecond and no-arg', function (assert) {
- var m = moment();
- assert.equal(+m, +m.clone().endOf(), 'endOf without argument should change time');
- assert.equal(+m, +m.clone().endOf('ms'), 'endOf with ms argument should change time');
- assert.equal(+m, +m.clone().endOf('millisecond'), 'endOf with millisecond argument should change time');
- assert.equal(+m, +m.clone().endOf('milliseconds'), 'endOf with milliseconds argument should change time');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('string prototype');
- test('string prototype overrides call', function (assert) {
- var prior = String.prototype.call, b;
- String.prototype.call = function () {
- return null;
- };
- b = moment(new Date(2011, 7, 28, 15, 25, 50, 125));
- assert.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm');
- String.prototype.call = prior;
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('to type');
- test('toObject', function (assert) {
- var expected = {
- years:2010,
- months:3,
- date:5,
- hours:15,
- minutes:10,
- seconds:3,
- milliseconds:123
- };
- assert.deepEqual(moment(expected).toObject(), expected, 'toObject invalid');
- });
- test('toArray', function (assert) {
- var expected = [2014, 11, 26, 11, 46, 58, 17];
- assert.deepEqual(moment(expected).toArray(), expected, 'toArray invalid');
- });
- test('toDate returns a copy of the internal date', function (assert) {
- var m = moment();
- var d = m.toDate();
- m.year(0);
- assert.notEqual(d, m.toDate());
- });
- test('toJSON', function (assert) {
- if (Date.prototype.toISOString) {
- var expected = new Date().toISOString();
- assert.deepEqual(moment(expected).toJSON(), expected, 'toJSON invalid');
- } else {
- // IE8
- expect(0);
- }
- });
- test('toJSON works when moment is frozen', function (assert) {
- if (Date.prototype.toISOString) {
- var expected = new Date().toISOString();
- var m = moment(expected);
- if (Object.freeze != null) {
- Object.freeze(m);
- }
- assert.deepEqual(m.toJSON(), expected, 'toJSON when frozen invalid');
- } else {
- // IE8
- expect(0);
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('utc');
- test('utc and local', function (assert) {
- var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), offset, expected;
- m.utc();
- // utc
- assert.equal(m.date(), 2, 'the day should be correct for utc');
- assert.equal(m.day(), 3, 'the date should be correct for utc');
- assert.equal(m.hours(), 3, 'the hours should be correct for utc');
- // local
- m.local();
- if (m.utcOffset() < -180) {
- assert.equal(m.date(), 1, 'the date should be correct for local');
- assert.equal(m.day(), 2, 'the day should be correct for local');
- } else {
- assert.equal(m.date(), 2, 'the date should be correct for local');
- assert.equal(m.day(), 3, 'the day should be correct for local');
- }
- offset = Math.floor(m.utcOffset() / 60);
- expected = (24 + 3 + offset) % 24;
- assert.equal(m.hours(), expected, 'the hours (' + m.hours() + ') should be correct for local');
- assert.equal(moment().utc().utcOffset(), 0, 'timezone in utc should always be zero');
- });
- test('creating with utc and no arguments', function (assert) {
- var startOfTest = new Date().valueOf(),
- momentDefaultUtcTime = moment.utc().valueOf(),
- afterMomentCreationTime = new Date().valueOf();
- assert.ok(startOfTest <= momentDefaultUtcTime, 'moment UTC default time should be now, not in the past');
- assert.ok(momentDefaultUtcTime <= afterMomentCreationTime, 'moment UTC default time should be now, not in the future');
- });
- test('creating with utc and a date parameter array', function (assert) {
- var m = moment.utc([2011, 1, 2, 3, 4, 5, 6]);
- assert.equal(m.date(), 2, 'the day should be correct for utc array');
- assert.equal(m.hours(), 3, 'the hours should be correct for utc array');
- m = moment.utc('2011-02-02 3:04:05', 'YYYY-MM-DD HH:mm:ss');
- assert.equal(m.date(), 2, 'the day should be correct for utc parsing format');
- assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing format');
- m = moment.utc('2011-02-02T03:04:05+00:00');
- assert.equal(m.date(), 2, 'the day should be correct for utc parsing iso');
- assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing iso');
- });
- test('creating with utc without timezone', function (assert) {
- var m = moment.utc('2012-01-02T08:20:00');
- assert.equal(m.date(), 2, 'the day should be correct for utc parse without timezone');
- assert.equal(m.hours(), 8, 'the hours should be correct for utc parse without timezone');
- m = moment.utc('2012-01-02T08:20:00+09:00');
- assert.equal(m.date(), 1, 'the day should be correct for utc parse with timezone');
- assert.equal(m.hours(), 23, 'the hours should be correct for utc parse with timezone');
- });
- test('cloning with utc offset', function (assert) {
- var m = moment.utc('2012-01-02T08:20:00');
- assert.equal(moment.utc(m)._isUTC, true, 'the local offset should be converted to UTC');
- assert.equal(moment.utc(m.clone().utc())._isUTC, true, 'the local offset should stay in UTC');
- m.utcOffset(120);
- assert.equal(moment.utc(m)._isUTC, true, 'the explicit utc offset should stay in UTC');
- assert.equal(moment.utc(m).utcOffset(), 0, 'the explicit utc offset should have an offset of 0');
- });
- test('weekday with utc', function (assert) {
- assert.equal(
- moment('2013-09-15T00:00:00Z').utc().weekday(), // first minute of the day
- moment('2013-09-15T23:59:00Z').utc().weekday(), // last minute of the day
- 'a UTC-moment\'s .weekday() should not be affected by the local timezone'
- );
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('utc offset');
- test('setter / getter blackbox', function (assert) {
- var m = moment([2010]);
- assert.equal(m.clone().utcOffset(0).utcOffset(), 0, 'utcOffset 0');
- assert.equal(m.clone().utcOffset(1).utcOffset(), 60, 'utcOffset 1 is 60');
- assert.equal(m.clone().utcOffset(60).utcOffset(), 60, 'utcOffset 60');
- assert.equal(m.clone().utcOffset('+01:00').utcOffset(), 60, 'utcOffset +01:00 is 60');
- assert.equal(m.clone().utcOffset('+0100').utcOffset(), 60, 'utcOffset +0100 is 60');
- assert.equal(m.clone().utcOffset(-1).utcOffset(), -60, 'utcOffset -1 is -60');
- assert.equal(m.clone().utcOffset(-60).utcOffset(), -60, 'utcOffset -60');
- assert.equal(m.clone().utcOffset('-01:00').utcOffset(), -60, 'utcOffset -01:00 is -60');
- assert.equal(m.clone().utcOffset('-0100').utcOffset(), -60, 'utcOffset -0100 is -60');
- assert.equal(m.clone().utcOffset(1.5).utcOffset(), 90, 'utcOffset 1.5 is 90');
- assert.equal(m.clone().utcOffset(90).utcOffset(), 90, 'utcOffset 1.5 is 90');
- assert.equal(m.clone().utcOffset('+01:30').utcOffset(), 90, 'utcOffset +01:30 is 90');
- assert.equal(m.clone().utcOffset('+0130').utcOffset(), 90, 'utcOffset +0130 is 90');
- assert.equal(m.clone().utcOffset(-1.5).utcOffset(), -90, 'utcOffset -1.5');
- assert.equal(m.clone().utcOffset(-90).utcOffset(), -90, 'utcOffset -90');
- assert.equal(m.clone().utcOffset('-01:30').utcOffset(), -90, 'utcOffset +01:30 is 90');
- assert.equal(m.clone().utcOffset('-0130').utcOffset(), -90, 'utcOffset +0130 is 90');
- assert.equal(m.clone().utcOffset('+00:10').utcOffset(), 10, 'utcOffset +00:10 is 10');
- assert.equal(m.clone().utcOffset('-00:10').utcOffset(), -10, 'utcOffset +00:10 is 10');
- assert.equal(m.clone().utcOffset('+0010').utcOffset(), 10, 'utcOffset +0010 is 10');
- assert.equal(m.clone().utcOffset('-0010').utcOffset(), -10, 'utcOffset +0010 is 10');
- });
- test('utcOffset shorthand hours -> minutes', function (assert) {
- var i;
- for (i = -15; i <= 15; ++i) {
- assert.equal(moment().utcOffset(i).utcOffset(), i * 60,
- '' + i + ' -> ' + i * 60);
- }
- assert.equal(moment().utcOffset(-16).utcOffset(), -16, '-16 -> -16');
- assert.equal(moment().utcOffset(16).utcOffset(), 16, '16 -> 16');
- });
- test('isLocal, isUtc, isUtcOffset', function (assert) {
- assert.ok(moment().isLocal(), 'moment() creates objects in local time');
- assert.ok(!moment.utc().isLocal(), 'moment.utc creates objects NOT in local time');
- assert.ok(moment.utc().local().isLocal(), 'moment.fn.local() converts to local time');
- assert.ok(!moment().utcOffset(5).isLocal(), 'moment.fn.utcOffset(N) puts objects NOT in local time');
- assert.ok(moment().utcOffset(5).local().isLocal(), 'moment.fn.local() converts to local time');
- assert.ok(moment.utc().isUtc(), 'moment.utc() creates objects in utc time');
- assert.ok(moment().utcOffset(0).isUtc(), 'utcOffset(0) is equivalent to utc mode');
- assert.ok(!moment().utcOffset(1).isUtc(), 'utcOffset(1) is NOT equivalent to utc mode');
- assert.ok(!moment().isUtcOffset(), 'moment() creates objects NOT in utc-offset mode');
- assert.ok(moment.utc().isUtcOffset(), 'moment.utc() creates objects in utc-offset mode');
- assert.ok(moment().utcOffset(3).isUtcOffset(), 'utcOffset(N != 0) creates objects in utc-offset mode');
- assert.ok(moment().utcOffset(0).isUtcOffset(), 'utcOffset(0) creates objects in utc-offset mode');
- });
- test('isUTC', function (assert) {
- assert.ok(moment.utc().isUTC(), 'moment.utc() creates objects in utc time');
- assert.ok(moment().utcOffset(0).isUTC(), 'utcOffset(0) is equivalent to utc mode');
- assert.ok(!moment().utcOffset(1).isUTC(), 'utcOffset(1) is NOT equivalent to utc mode');
- });
- test('change hours when changing the utc offset', function (assert) {
- var m = moment.utc([2000, 0, 1, 6]);
- assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000');
- // sanity check
- m.utcOffset(0);
- assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000');
- m.utcOffset(-60);
- assert.equal(m.hour(), 5, 'UTC 6AM should be 5AM at -0100');
- m.utcOffset(60);
- assert.equal(m.hour(), 7, 'UTC 6AM should be 7AM at +0100');
- });
- test('change minutes when changing the utc offset', function (assert) {
- var m = moment.utc([2000, 0, 1, 6, 31]);
- m.utcOffset(0);
- assert.equal(m.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000');
- m.utcOffset(-30);
- assert.equal(m.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030');
- m.utcOffset(30);
- assert.equal(m.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030');
- m.utcOffset(-1380);
- assert.equal(m.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380');
- });
- test('distance from the unix epoch', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA),
- zoneC = moment(zoneA),
- zoneD = moment(zoneA),
- zoneE = moment(zoneA);
- zoneB.utc();
- assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc');
- zoneC.utcOffset(60);
- assert.equal(+zoneA, +zoneC, 'moment should equal moment.utcOffset(60)');
- zoneD.utcOffset(-480);
- assert.equal(+zoneA, +zoneD,
- 'moment should equal moment.utcOffset(-480)');
- zoneE.utcOffset(-1000);
- assert.equal(+zoneA, +zoneE,
- 'moment should equal moment.utcOffset(-1000)');
- });
- test('update offset after changing any values', function (assert) {
- var oldOffset = moment.updateOffset,
- m = moment.utc([2000, 6, 1]);
- moment.updateOffset = function (mom, keepTime) {
- if (mom.__doChange) {
- if (+mom > 962409600000) {
- mom.utcOffset(-120, keepTime);
- } else {
- mom.utcOffset(-60, keepTime);
- }
- }
- };
- assert.equal(m.format('ZZ'), '+0000', 'should be at +0000');
- assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone');
- m.__doChange = true;
- m.add(1, 'h');
- assert.equal(m.format('ZZ'), '-0200', 'should be at -0200');
- assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone');
- m.subtract(1, 'h');
- assert.equal(m.format('ZZ'), '-0100', 'should be at -0100');
- assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone');
- moment.updateOffset = oldOffset;
- });
- //////////////////
- test('getters and setters', function (assert) {
- var a = moment([2011, 5, 20]);
- assert.equal(a.clone().utcOffset(-120).year(2012).year(), 2012, 'should get and set year correctly');
- assert.equal(a.clone().utcOffset(-120).month(1).month(), 1, 'should get and set month correctly');
- assert.equal(a.clone().utcOffset(-120).date(2).date(), 2, 'should get and set date correctly');
- assert.equal(a.clone().utcOffset(-120).day(1).day(), 1, 'should get and set day correctly');
- assert.equal(a.clone().utcOffset(-120).hour(1).hour(), 1, 'should get and set hour correctly');
- assert.equal(a.clone().utcOffset(-120).minute(1).minute(), 1, 'should get and set minute correctly');
- });
- test('getters', function (assert) {
- var a = moment.utc([2012, 0, 1, 0, 0, 0]);
- assert.equal(a.clone().utcOffset(-120).year(), 2011, 'should get year correctly');
- assert.equal(a.clone().utcOffset(-120).month(), 11, 'should get month correctly');
- assert.equal(a.clone().utcOffset(-120).date(), 31, 'should get date correctly');
- assert.equal(a.clone().utcOffset(-120).hour(), 22, 'should get hour correctly');
- assert.equal(a.clone().utcOffset(-120).minute(), 0, 'should get minute correctly');
- assert.equal(a.clone().utcOffset(120).year(), 2012, 'should get year correctly');
- assert.equal(a.clone().utcOffset(120).month(), 0, 'should get month correctly');
- assert.equal(a.clone().utcOffset(120).date(), 1, 'should get date correctly');
- assert.equal(a.clone().utcOffset(120).hour(), 2, 'should get hour correctly');
- assert.equal(a.clone().utcOffset(120).minute(), 0, 'should get minute correctly');
- assert.equal(a.clone().utcOffset(90).year(), 2012, 'should get year correctly');
- assert.equal(a.clone().utcOffset(90).month(), 0, 'should get month correctly');
- assert.equal(a.clone().utcOffset(90).date(), 1, 'should get date correctly');
- assert.equal(a.clone().utcOffset(90).hour(), 1, 'should get hour correctly');
- assert.equal(a.clone().utcOffset(90).minute(), 30, 'should get minute correctly');
- });
- test('from', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA).utcOffset(-720),
- zoneC = moment(zoneA).utcOffset(-360),
- zoneD = moment(zoneA).utcOffset(690),
- other = moment(zoneA).add(35, 'm');
- assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones');
- assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones');
- assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones');
- });
- test('diff', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA).utcOffset(-720),
- zoneC = moment(zoneA).utcOffset(-360),
- zoneD = moment(zoneA).utcOffset(690),
- other = moment(zoneA).add(35, 'm');
- assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones');
- });
- test('unix offset and timestamp', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA).utcOffset(-720),
- zoneC = moment(zoneA).utcOffset(-360),
- zoneD = moment(zoneA).utcOffset(690);
- assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones');
- assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones');
- assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones');
- assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones');
- assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones');
- assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones');
- });
- test('cloning', function (assert) {
- assert.equal(moment().utcOffset(-120).clone().utcOffset(), -120,
- 'explicit cloning should retain the offset');
- assert.equal(moment().utcOffset(120).clone().utcOffset(), 120,
- 'explicit cloning should retain the offset');
- assert.equal(moment(moment().utcOffset(-120)).utcOffset(), -120,
- 'implicit cloning should retain the offset');
- assert.equal(moment(moment().utcOffset(120)).utcOffset(), 120,
- 'implicit cloning should retain the offset');
- });
- test('start of / end of', function (assert) {
- var a = moment.utc([2010, 1, 2, 0, 0, 0]).utcOffset(-450);
- assert.equal(a.clone().startOf('day').hour(), 0,
- 'start of day should work on moments with utc offset');
- assert.equal(a.clone().startOf('day').minute(), 0,
- 'start of day should work on moments with utc offset');
- assert.equal(a.clone().startOf('hour').minute(), 0,
- 'start of hour should work on moments with utc offset');
- assert.equal(a.clone().endOf('day').hour(), 23,
- 'end of day should work on moments with utc offset');
- assert.equal(a.clone().endOf('day').minute(), 59,
- 'end of day should work on moments with utc offset');
- assert.equal(a.clone().endOf('hour').minute(), 59,
- 'end of hour should work on moments with utc offset');
- });
- test('reset offset with moment#utc', function (assert) {
- var a = moment.utc([2012]).utcOffset(-480);
- assert.equal(a.clone().hour(), 16, 'different utc offset should have different hour');
- assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset');
- });
- test('reset offset with moment#local', function (assert) {
- var a = moment([2012]).utcOffset(-480);
- assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset');
- });
- test('toDate', function (assert) {
- var zoneA = new Date(),
- zoneB = moment(zoneA).utcOffset(-720).toDate(),
- zoneC = moment(zoneA).utcOffset(-360).toDate(),
- zoneD = moment(zoneA).utcOffset(690).toDate();
- assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp');
- assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp');
- assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp');
- });
- test('same / before / after', function (assert) {
- var zoneA = moment().utc(),
- zoneB = moment(zoneA).utcOffset(-120),
- zoneC = moment(zoneA).utcOffset(120);
- assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same');
- assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same');
- assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour');
- assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour');
- zoneA.add(1, 'hour');
- assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets');
- assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets');
- assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets');
- assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets');
- zoneA.subtract(2, 'hour');
- assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets');
- assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets');
- assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets');
- assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets');
- });
- test('add / subtract over dst', function (assert) {
- var oldOffset = moment.updateOffset,
- m = moment.utc([2000, 2, 31, 3]);
- moment.updateOffset = function (mom, keepTime) {
- if (mom.clone().utc().month() > 2) {
- mom.utcOffset(60, keepTime);
- } else {
- mom.utcOffset(0, keepTime);
- }
- };
- assert.equal(m.hour(), 3, 'should start at 00:00');
- m.add(24, 'hour');
- assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst');
- m.subtract(24, 'hour');
- assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst');
- m.add(1, 'day');
- assert.equal(m.hour(), 3, 'adding 1 day should have the same hour');
- m.subtract(1, 'day');
- assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour');
- m.add(1, 'month');
- assert.equal(m.hour(), 3, 'adding 1 month should have the same hour');
- m.subtract(1, 'month');
- assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour');
- moment.updateOffset = oldOffset;
- });
- test('isDST', function (assert) {
- var oldOffset = moment.updateOffset;
- moment.updateOffset = function (mom, keepTime) {
- if (mom.month() > 2 && mom.month() < 9) {
- mom.utcOffset(60, keepTime);
- } else {
- mom.utcOffset(0, keepTime);
- }
- };
- assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst');
- assert.ok(moment().month(6).isDST(), 'Jul should be summer dst');
- assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst');
- moment.updateOffset = function (mom) {
- if (mom.month() > 2 && mom.month() < 9) {
- mom.utcOffset(0);
- } else {
- mom.utcOffset(60);
- }
- };
- assert.ok(moment().month(0).isDST(), 'Jan should be winter dst');
- assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst');
- assert.ok(moment().month(11).isDST(), 'Dec should be winter dst');
- moment.updateOffset = oldOffset;
- });
- test('zone names', function (assert) {
- assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty');
- assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty');
- assert.equal(moment().zoneName(), '', 'Local zone name should be empty');
- assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty');
- assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC');
- assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC');
- assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time');
- assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time');
- });
- test('hours alignment with UTC', function (assert) {
- assert.equal(moment().utcOffset(-120).hasAlignedHourOffset(), true);
- assert.equal(moment().utcOffset(180).hasAlignedHourOffset(), true);
- assert.equal(moment().utcOffset(-90).hasAlignedHourOffset(), false);
- assert.equal(moment().utcOffset(90).hasAlignedHourOffset(), false);
- });
- test('hours alignment with other zone', function (assert) {
- var m = moment().utcOffset(-120);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false);
- m = moment().utcOffset(-90);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), false);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), false);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-30)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(30)), true);
- m = moment().utcOffset(60);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false);
- m = moment().utcOffset(-25);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(35)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-85)), true);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-35)), false);
- assert.equal(m.hasAlignedHourOffset(moment().utcOffset(85)), false);
- });
- test('parse zone', function (assert) {
- var m = moment('2013-01-01T00:00:00-13:00').parseZone();
- assert.equal(m.utcOffset(), -13 * 60);
- assert.equal(m.hours(), 0);
- });
- test('parse UTC zone', function (assert) {
- var m = moment('2013-01-01T05:00:00+00:00').parseZone();
- assert.equal(m.utcOffset(), 0);
- assert.equal(m.hours(), 5);
- });
- test('parse zone static', function (assert) {
- var m = moment.parseZone('2013-01-01T00:00:00-13:00');
- assert.equal(m.utcOffset(), -13 * 60);
- assert.equal(m.hours(), 0);
- });
- test('parse zone with more arguments', function (assert) {
- var m;
- m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ');
- assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format');
- m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true);
- assert.equal(m.isValid(), false, 'accept input, format and strict flag');
- m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']);
- assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats');
- });
- test('parse zone with a timezone from the format string', function (assert) {
- var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone();
- assert.equal(m.utcOffset(), -4 * 60);
- });
- test('parse zone without a timezone included in the format string', function (assert) {
- var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone();
- assert.equal(m.utcOffset(), 11 * 60);
- });
- test('timezone format', function (assert) {
- assert.equal(moment().utcOffset(60).format('ZZ'), '+0100', '-60 -> +0100');
- assert.equal(moment().utcOffset(90).format('ZZ'), '+0130', '-90 -> +0130');
- assert.equal(moment().utcOffset(120).format('ZZ'), '+0200', '-120 -> +0200');
- assert.equal(moment().utcOffset(-60).format('ZZ'), '-0100', '+60 -> -0100');
- assert.equal(moment().utcOffset(-90).format('ZZ'), '-0130', '+90 -> -0130');
- assert.equal(moment().utcOffset(-120).format('ZZ'), '-0200', '+120 -> -0200');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('week year');
- test('iso week year', function (assert) {
- // Some examples taken from https://en.wikipedia.org/wiki/ISO_week
- assert.equal(moment([2005, 0, 1]).isoWeekYear(), 2004);
- assert.equal(moment([2005, 0, 2]).isoWeekYear(), 2004);
- assert.equal(moment([2005, 0, 3]).isoWeekYear(), 2005);
- assert.equal(moment([2005, 11, 31]).isoWeekYear(), 2005);
- assert.equal(moment([2006, 0, 1]).isoWeekYear(), 2005);
- assert.equal(moment([2006, 0, 2]).isoWeekYear(), 2006);
- assert.equal(moment([2007, 0, 1]).isoWeekYear(), 2007);
- assert.equal(moment([2007, 11, 30]).isoWeekYear(), 2007);
- assert.equal(moment([2007, 11, 31]).isoWeekYear(), 2008);
- assert.equal(moment([2008, 0, 1]).isoWeekYear(), 2008);
- assert.equal(moment([2008, 11, 28]).isoWeekYear(), 2008);
- assert.equal(moment([2008, 11, 29]).isoWeekYear(), 2009);
- assert.equal(moment([2008, 11, 30]).isoWeekYear(), 2009);
- assert.equal(moment([2008, 11, 31]).isoWeekYear(), 2009);
- assert.equal(moment([2009, 0, 1]).isoWeekYear(), 2009);
- assert.equal(moment([2010, 0, 1]).isoWeekYear(), 2009);
- assert.equal(moment([2010, 0, 2]).isoWeekYear(), 2009);
- assert.equal(moment([2010, 0, 3]).isoWeekYear(), 2009);
- assert.equal(moment([2010, 0, 4]).isoWeekYear(), 2010);
- });
- test('week year', function (assert) {
- // Some examples taken from https://en.wikipedia.org/wiki/ISO_week
- moment.locale('dow: 1,doy: 4', {week: {dow: 1, doy: 4}}); // like iso
- assert.equal(moment([2005, 0, 1]).weekYear(), 2004);
- assert.equal(moment([2005, 0, 2]).weekYear(), 2004);
- assert.equal(moment([2005, 0, 3]).weekYear(), 2005);
- assert.equal(moment([2005, 11, 31]).weekYear(), 2005);
- assert.equal(moment([2006, 0, 1]).weekYear(), 2005);
- assert.equal(moment([2006, 0, 2]).weekYear(), 2006);
- assert.equal(moment([2007, 0, 1]).weekYear(), 2007);
- assert.equal(moment([2007, 11, 30]).weekYear(), 2007);
- assert.equal(moment([2007, 11, 31]).weekYear(), 2008);
- assert.equal(moment([2008, 0, 1]).weekYear(), 2008);
- assert.equal(moment([2008, 11, 28]).weekYear(), 2008);
- assert.equal(moment([2008, 11, 29]).weekYear(), 2009);
- assert.equal(moment([2008, 11, 30]).weekYear(), 2009);
- assert.equal(moment([2008, 11, 31]).weekYear(), 2009);
- assert.equal(moment([2009, 0, 1]).weekYear(), 2009);
- assert.equal(moment([2010, 0, 1]).weekYear(), 2009);
- assert.equal(moment([2010, 0, 2]).weekYear(), 2009);
- assert.equal(moment([2010, 0, 3]).weekYear(), 2009);
- assert.equal(moment([2010, 0, 4]).weekYear(), 2010);
- moment.locale('dow: 1,doy: 7', {week: {dow: 1, doy: 7}});
- assert.equal(moment([2004, 11, 26]).weekYear(), 2004);
- assert.equal(moment([2004, 11, 27]).weekYear(), 2005);
- assert.equal(moment([2005, 11, 25]).weekYear(), 2005);
- assert.equal(moment([2005, 11, 26]).weekYear(), 2006);
- assert.equal(moment([2006, 11, 31]).weekYear(), 2006);
- assert.equal(moment([2007, 0, 1]).weekYear(), 2007);
- assert.equal(moment([2007, 11, 30]).weekYear(), 2007);
- assert.equal(moment([2007, 11, 31]).weekYear(), 2008);
- assert.equal(moment([2008, 11, 28]).weekYear(), 2008);
- assert.equal(moment([2008, 11, 29]).weekYear(), 2009);
- assert.equal(moment([2009, 11, 27]).weekYear(), 2009);
- assert.equal(moment([2009, 11, 28]).weekYear(), 2010);
- });
- // Verifies that the week number, week day computation is correct for all dow, doy combinations
- test('week year roundtrip', function (assert) {
- var dow, doy, wd, m, localeName;
- for (dow = 0; dow < 7; ++dow) {
- for (doy = dow; doy < dow + 7; ++doy) {
- for (wd = 0; wd < 7; ++wd) {
- localeName = 'dow: ' + dow + ', doy: ' + doy;
- moment.locale(localeName, {week: {dow: dow, doy: doy}});
- // We use the 10th week as the 1st one can spill to the previous year
- m = moment('2015 10 ' + wd, 'gggg w d', true);
- assert.equal(m.format('gggg w d'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd);
- m = moment('2015 10 ' + wd, 'gggg w e', true);
- assert.equal(m.format('gggg w e'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd);
- moment.defineLocale(localeName, null);
- }
- }
- }
- });
- test('week numbers 2012/2013', function (assert) {
- moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}});
- assert.equal(52, moment('2012-12-28', 'YYYY-MM-DD').week(), '2012-12-28 is week 52'); // 51 -- should be 52?
- assert.equal(1, moment('2012-12-29', 'YYYY-MM-DD').week(), '2012-12-29 is week 1'); // 52 -- should be 1
- assert.equal(1, moment('2013-01-01', 'YYYY-MM-DD').week(), '2013-01-01 is week 1'); // 52 -- should be 1
- assert.equal(2, moment('2013-01-08', 'YYYY-MM-DD').week(), '2013-01-08 is week 2'); // 53 -- should be 2
- assert.equal(2, moment('2013-01-11', 'YYYY-MM-DD').week(), '2013-01-11 is week 2'); // 53 -- should be 2
- assert.equal(3, moment('2013-01-12', 'YYYY-MM-DD').week(), '2013-01-12 is week 3'); // 1 -- should be 3
- assert.equal(52, moment('2012-01-01', 'YYYY-MM-DD').weeksInYear(), 'weeks in 2012 are 52'); // 52
- moment.defineLocale('dow: 6, doy: 12', null);
- });
- test('weeks numbers dow:1 doy:4', function (assert) {
- moment.locale('dow: 1, doy: 4', {week: {dow: 1, doy: 4}});
- assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52');
- assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1');
- assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2');
- assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
- assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1');
- assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2');
- assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2');
- assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3');
- assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1');
- assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
- assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1');
- assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2');
- assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2');
- assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3');
- assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1');
- assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
- assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1');
- assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2');
- assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2');
- assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3');
- assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1');
- assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
- assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1');
- assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2');
- assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2');
- assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3');
- assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53');
- assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53');
- assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53');
- assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1');
- assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1');
- assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2');
- assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52');
- assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52');
- assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52');
- assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1');
- assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1');
- assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2');
- moment.defineLocale('dow: 1, doy: 4', null);
- });
- test('weeks numbers dow:6 doy:12', function (assert) {
- moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}});
- assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1');
- assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2');
- assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3');
- assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1');
- assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1');
- assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2');
- assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2');
- assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3');
- assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1');
- assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
- assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1');
- assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2');
- assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2');
- assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3');
- assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1');
- assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
- assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1');
- assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2');
- assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2');
- assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3');
- assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1');
- assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
- assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1');
- assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2');
- assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2');
- assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3');
- assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1');
- assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
- assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2');
- assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2');
- assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3');
- assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
- assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1');
- assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2');
- assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2');
- assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3');
- moment.defineLocale('dow: 6, doy: 12', null);
- });
- test('weeks numbers dow:1 doy:7', function (assert) {
- moment.locale('dow: 1, doy: 7', {week: {dow: 1, doy: 7}});
- assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1');
- assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2');
- assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3');
- assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
- assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1');
- assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2');
- assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2');
- assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3');
- assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1');
- assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
- assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1');
- assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2');
- assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2');
- assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3');
- assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1');
- assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
- assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1');
- assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2');
- assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2');
- assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3');
- assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1');
- assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
- assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1');
- assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2');
- assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2');
- assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3');
- assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1');
- assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
- assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1');
- assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2');
- assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2');
- assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3');
- assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1');
- assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
- assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1');
- assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2');
- assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2');
- assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3');
- moment.defineLocale('dow: 1, doy: 7', null);
- });
- test('weeks numbers dow:0 doy:6', function (assert) {
- moment.locale('dow: 0, doy: 6', {week: {dow: 0, doy: 6}});
- assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3');
- assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1');
- assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1');
- assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1');
- assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2');
- assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2');
- assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3');
- assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52');
- assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1');
- assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1');
- assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2');
- assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2');
- assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3');
- assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1');
- assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1');
- assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1');
- assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2');
- assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2');
- assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3');
- assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1');
- assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1');
- assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1');
- assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2');
- assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2');
- assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3');
- assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1');
- assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1');
- assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1');
- assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2');
- assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2');
- assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3');
- assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1');
- assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1');
- assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2');
- assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2');
- assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3');
- moment.defineLocale('dow: 0, doy: 6', null);
- });
- test('week year overflows', function (assert) {
- assert.equal('2005-01-01', moment.utc('2004-W53-6', moment.ISO_8601, true).format('YYYY-MM-DD'), '2004-W53-6 is 1st Jan 2005');
- assert.equal('2007-12-31', moment.utc('2008-W01-1', moment.ISO_8601, true).format('YYYY-MM-DD'), '2008-W01-1 is 31st Dec 2007');
- });
- test('weeks overflow', function (assert) {
- assert.equal(7, moment.utc('2004-W54-1', moment.ISO_8601, true).parsingFlags().overflow, '2004 has only 53 weeks');
- assert.equal(7, moment.utc('2004-W00-1', moment.ISO_8601, true).parsingFlags().overflow, 'there is no 0th week');
- });
- test('weekday overflow', function (assert) {
- assert.equal(8, moment.utc('2004-W30-0', moment.ISO_8601, true).parsingFlags().overflow, 'there is no 0 iso weekday');
- assert.equal(8, moment.utc('2004-W30-8', moment.ISO_8601, true).parsingFlags().overflow, 'there is no 8 iso weekday');
- assert.equal(8, moment.utc('2004-w30-7', 'gggg-[w]ww-e', true).parsingFlags().overflow, 'there is no 7 \'e\' weekday');
- assert.equal(8, moment.utc('2004-w30-7', 'gggg-[w]ww-d', true).parsingFlags().overflow, 'there is no 7 \'d\' weekday');
- });
- test('week year setter works', function (assert) {
- for (var year = 2000; year <= 2020; year += 1) {
- assert.equal(moment.utc('2012-12-31T00:00:00.000Z').isoWeekYear(year).isoWeekYear(), year, 'setting iso-week-year to ' + year);
- assert.equal(moment.utc('2012-12-31T00:00:00.000Z').weekYear(year).weekYear(), year, 'setting week-year to ' + year);
- }
- assert.equal(moment.utc('2004-W53-1', moment.ISO_8601, true).isoWeekYear(2013).format('GGGG-[W]WW-E'), '2013-W52-1', '2004-W53-1 to 2013');
- assert.equal(moment.utc('2004-W53-1', moment.ISO_8601, true).isoWeekYear(2020).format('GGGG-[W]WW-E'), '2020-W53-1', '2004-W53-1 to 2020');
- assert.equal(moment.utc('2005-W52-1', moment.ISO_8601, true).isoWeekYear(2004).format('GGGG-[W]WW-E'), '2004-W52-1', '2005-W52-1 to 2004');
- assert.equal(moment.utc('2013-W30-4', moment.ISO_8601, true).isoWeekYear(2015).format('GGGG-[W]WW-E'), '2015-W30-4', '2013-W30-4 to 2015');
- assert.equal(moment.utc('2005-w53-0', 'gggg-[w]ww-e', true).weekYear(2013).format('gggg-[w]ww-e'), '2013-w52-0', '2005-w53-0 to 2013');
- assert.equal(moment.utc('2005-w53-0', 'gggg-[w]ww-e', true).weekYear(2016).format('gggg-[w]ww-e'), '2016-w53-0', '2005-w53-0 to 2016');
- assert.equal(moment.utc('2004-w52-0', 'gggg-[w]ww-e', true).weekYear(2005).format('gggg-[w]ww-e'), '2005-w52-0', '2004-w52-0 to 2005');
- assert.equal(moment.utc('2013-w30-4', 'gggg-[w]ww-e', true).weekYear(2015).format('gggg-[w]ww-e'), '2015-w30-4', '2013-w30-4 to 2015');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('week day');
- test('iso weekday', function (assert) {
- var i;
- for (i = 0; i < 7; ++i) {
- moment.locale('dow:' + i + ',doy: 6', {week: {dow: i, doy: 6}});
- assert.equal(moment([1985, 1, 4]).isoWeekday(), 1, 'Feb 4 1985 is Monday -- 1st day');
- assert.equal(moment([2029, 8, 18]).isoWeekday(), 2, 'Sep 18 2029 is Tuesday -- 2nd day');
- assert.equal(moment([2013, 3, 24]).isoWeekday(), 3, 'Apr 24 2013 is Wednesday -- 3rd day');
- assert.equal(moment([2015, 2, 5]).isoWeekday(), 4, 'Mar 5 2015 is Thursday -- 4th day');
- assert.equal(moment([1970, 0, 2]).isoWeekday(), 5, 'Jan 2 1970 is Friday -- 5th day');
- assert.equal(moment([2001, 4, 12]).isoWeekday(), 6, 'May 12 2001 is Saturday -- 6th day');
- assert.equal(moment([2000, 0, 2]).isoWeekday(), 7, 'Jan 2 2000 is Sunday -- 7th day');
- }
- });
- test('iso weekday setter', function (assert) {
- var a = moment([2011, 0, 10]);
- assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon');
- assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu');
- assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun');
- assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon');
- assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu');
- assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun');
- assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon');
- assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu');
- assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun');
- a = moment([2011, 0, 13]);
- assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon');
- assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu');
- assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun');
- assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon');
- assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu');
- assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun');
- assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon');
- assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu');
- assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun');
- a = moment([2011, 0, 16]);
- assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon');
- assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu');
- assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun');
- assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon');
- assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu');
- assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun');
- assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon');
- assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu');
- assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun');
- });
- test('iso weekday setter with day name', function (assert) {
- moment.locale('en');
- var a = moment([2011, 0, 10]);
- assert.equal(moment(a).isoWeekday('Monday').date(), 10, 'set from mon to mon');
- assert.equal(moment(a).isoWeekday('Thursday').date(), 13, 'set from mon to thu');
- assert.equal(moment(a).isoWeekday('Sunday').date(), 16, 'set from mon to sun');
- a = moment([2011, 0, 13]);
- assert.equal(moment(a).isoWeekday('Monday').date(), 10, 'set from thu to mon');
- assert.equal(moment(a).isoWeekday('Thursday').date(), 13, 'set from thu to thu');
- assert.equal(moment(a).isoWeekday('Sunday').date(), 16, 'set from thu to sun');
- a = moment([2011, 0, 16]);
- assert.equal(moment(a).isoWeekday('Monday').date(), 10, 'set from sun to mon');
- assert.equal(moment(a).isoWeekday('Thursday').date(), 13, 'set from sun to thu');
- assert.equal(moment(a).isoWeekday('Sunday').date(), 16, 'set from sun to sun');
- });
- test('weekday first day of week Sunday (dow 0)', function (assert) {
- moment.locale('dow: 0,doy: 6', {week: {dow: 0, doy: 6}});
- assert.equal(moment([1985, 1, 3]).weekday(), 0, 'Feb 3 1985 is Sunday -- 0th day');
- assert.equal(moment([2029, 8, 17]).weekday(), 1, 'Sep 17 2029 is Monday -- 1st day');
- assert.equal(moment([2013, 3, 23]).weekday(), 2, 'Apr 23 2013 is Tuesday -- 2nd day');
- assert.equal(moment([2015, 2, 4]).weekday(), 3, 'Mar 4 2015 is Wednesday -- 3nd day');
- assert.equal(moment([1970, 0, 1]).weekday(), 4, 'Jan 1 1970 is Thursday -- 4th day');
- assert.equal(moment([2001, 4, 11]).weekday(), 5, 'May 11 2001 is Friday -- 5th day');
- assert.equal(moment([2000, 0, 1]).weekday(), 6, 'Jan 1 2000 is Saturday -- 6th day');
- });
- test('weekday first day of week Monday (dow 1)', function (assert) {
- moment.locale('dow: 1,doy: 6', {week: {dow: 1, doy: 6}});
- assert.equal(moment([1985, 1, 4]).weekday(), 0, 'Feb 4 1985 is Monday -- 0th day');
- assert.equal(moment([2029, 8, 18]).weekday(), 1, 'Sep 18 2029 is Tuesday -- 1st day');
- assert.equal(moment([2013, 3, 24]).weekday(), 2, 'Apr 24 2013 is Wednesday -- 2nd day');
- assert.equal(moment([2015, 2, 5]).weekday(), 3, 'Mar 5 2015 is Thursday -- 3nd day');
- assert.equal(moment([1970, 0, 2]).weekday(), 4, 'Jan 2 1970 is Friday -- 4th day');
- assert.equal(moment([2001, 4, 12]).weekday(), 5, 'May 12 2001 is Saturday -- 5th day');
- assert.equal(moment([2000, 0, 2]).weekday(), 6, 'Jan 2 2000 is Sunday -- 6th day');
- });
- test('weekday first day of week Tuesday (dow 2)', function (assert) {
- moment.locale('dow: 2,doy: 6', {week: {dow: 2, doy: 6}});
- assert.equal(moment([1985, 1, 5]).weekday(), 0, 'Feb 5 1985 is Tuesday -- 0th day');
- assert.equal(moment([2029, 8, 19]).weekday(), 1, 'Sep 19 2029 is Wednesday -- 1st day');
- assert.equal(moment([2013, 3, 25]).weekday(), 2, 'Apr 25 2013 is Thursday -- 2nd day');
- assert.equal(moment([2015, 2, 6]).weekday(), 3, 'Mar 6 2015 is Friday -- 3nd day');
- assert.equal(moment([1970, 0, 3]).weekday(), 4, 'Jan 3 1970 is Staturday -- 4th day');
- assert.equal(moment([2001, 4, 13]).weekday(), 5, 'May 13 2001 is Sunday -- 5th day');
- assert.equal(moment([2000, 0, 3]).weekday(), 6, 'Jan 3 2000 is Monday -- 6th day');
- });
- test('weekday first day of week Wednesday (dow 3)', function (assert) {
- moment.locale('dow: 3,doy: 6', {week: {dow: 3, doy: 6}});
- assert.equal(moment([1985, 1, 6]).weekday(), 0, 'Feb 6 1985 is Wednesday -- 0th day');
- assert.equal(moment([2029, 8, 20]).weekday(), 1, 'Sep 20 2029 is Thursday -- 1st day');
- assert.equal(moment([2013, 3, 26]).weekday(), 2, 'Apr 26 2013 is Friday -- 2nd day');
- assert.equal(moment([2015, 2, 7]).weekday(), 3, 'Mar 7 2015 is Saturday -- 3nd day');
- assert.equal(moment([1970, 0, 4]).weekday(), 4, 'Jan 4 1970 is Sunday -- 4th day');
- assert.equal(moment([2001, 4, 14]).weekday(), 5, 'May 14 2001 is Monday -- 5th day');
- assert.equal(moment([2000, 0, 4]).weekday(), 6, 'Jan 4 2000 is Tuesday -- 6th day');
- moment.locale('dow:3,doy:6', null);
- });
- test('weekday first day of week Thursday (dow 4)', function (assert) {
- moment.locale('dow: 4,doy: 6', {week: {dow: 4, doy: 6}});
- assert.equal(moment([1985, 1, 7]).weekday(), 0, 'Feb 7 1985 is Thursday -- 0th day');
- assert.equal(moment([2029, 8, 21]).weekday(), 1, 'Sep 21 2029 is Friday -- 1st day');
- assert.equal(moment([2013, 3, 27]).weekday(), 2, 'Apr 27 2013 is Saturday -- 2nd day');
- assert.equal(moment([2015, 2, 8]).weekday(), 3, 'Mar 8 2015 is Sunday -- 3nd day');
- assert.equal(moment([1970, 0, 5]).weekday(), 4, 'Jan 5 1970 is Monday -- 4th day');
- assert.equal(moment([2001, 4, 15]).weekday(), 5, 'May 15 2001 is Tuesday -- 5th day');
- assert.equal(moment([2000, 0, 5]).weekday(), 6, 'Jan 5 2000 is Wednesday -- 6th day');
- });
- test('weekday first day of week Friday (dow 5)', function (assert) {
- moment.locale('dow: 5,doy: 6', {week: {dow: 5, doy: 6}});
- assert.equal(moment([1985, 1, 8]).weekday(), 0, 'Feb 8 1985 is Friday -- 0th day');
- assert.equal(moment([2029, 8, 22]).weekday(), 1, 'Sep 22 2029 is Staturday -- 1st day');
- assert.equal(moment([2013, 3, 28]).weekday(), 2, 'Apr 28 2013 is Sunday -- 2nd day');
- assert.equal(moment([2015, 2, 9]).weekday(), 3, 'Mar 9 2015 is Monday -- 3nd day');
- assert.equal(moment([1970, 0, 6]).weekday(), 4, 'Jan 6 1970 is Tuesday -- 4th day');
- assert.equal(moment([2001, 4, 16]).weekday(), 5, 'May 16 2001 is Wednesday -- 5th day');
- assert.equal(moment([2000, 0, 6]).weekday(), 6, 'Jan 6 2000 is Thursday -- 6th day');
- });
- test('weekday first day of week Saturday (dow 6)', function (assert) {
- moment.locale('dow: 6,doy: 6', {week: {dow: 6, doy: 6}});
- assert.equal(moment([1985, 1, 9]).weekday(), 0, 'Feb 9 1985 is Staturday -- 0th day');
- assert.equal(moment([2029, 8, 23]).weekday(), 1, 'Sep 23 2029 is Sunday -- 1st day');
- assert.equal(moment([2013, 3, 29]).weekday(), 2, 'Apr 29 2013 is Monday -- 2nd day');
- assert.equal(moment([2015, 2, 10]).weekday(), 3, 'Mar 10 2015 is Tuesday -- 3nd day');
- assert.equal(moment([1970, 0, 7]).weekday(), 4, 'Jan 7 1970 is Wednesday -- 4th day');
- assert.equal(moment([2001, 4, 17]).weekday(), 5, 'May 17 2001 is Thursday -- 5th day');
- assert.equal(moment([2000, 0, 7]).weekday(), 6, 'Jan 7 2000 is Friday -- 6th day');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('weeks');
- test('day of year', function (assert) {
- assert.equal(moment([2000, 0, 1]).dayOfYear(), 1, 'Jan 1 2000 should be day 1 of the year');
- assert.equal(moment([2000, 1, 28]).dayOfYear(), 59, 'Feb 28 2000 should be day 59 of the year');
- assert.equal(moment([2000, 1, 29]).dayOfYear(), 60, 'Feb 28 2000 should be day 60 of the year');
- assert.equal(moment([2000, 11, 31]).dayOfYear(), 366, 'Dec 31 2000 should be day 366 of the year');
- assert.equal(moment([2001, 0, 1]).dayOfYear(), 1, 'Jan 1 2001 should be day 1 of the year');
- assert.equal(moment([2001, 1, 28]).dayOfYear(), 59, 'Feb 28 2001 should be day 59 of the year');
- assert.equal(moment([2001, 2, 1]).dayOfYear(), 60, 'Mar 1 2001 should be day 60 of the year');
- assert.equal(moment([2001, 11, 31]).dayOfYear(), 365, 'Dec 31 2001 should be day 365 of the year');
- });
- test('day of year setters', function (assert) {
- assert.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, 'Setting Jan 1 2000 day of the year to 200 should work');
- assert.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work');
- assert.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work');
- assert.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, 'Setting Dec 31 2000 day of the year to 200 should work');
- assert.equal(moment().dayOfYear(1).dayOfYear(), 1, 'Setting day of the year to 1 should work');
- assert.equal(moment().dayOfYear(59).dayOfYear(), 59, 'Setting day of the year to 59 should work');
- assert.equal(moment().dayOfYear(60).dayOfYear(), 60, 'Setting day of the year to 60 should work');
- assert.equal(moment().dayOfYear(365).dayOfYear(), 365, 'Setting day of the year to 365 should work');
- });
- test('iso weeks year starting sunday', function (assert) {
- assert.equal(moment([2012, 0, 1]).isoWeek(), 52, 'Jan 1 2012 should be iso week 52');
- assert.equal(moment([2012, 0, 2]).isoWeek(), 1, 'Jan 2 2012 should be iso week 1');
- assert.equal(moment([2012, 0, 8]).isoWeek(), 1, 'Jan 8 2012 should be iso week 1');
- assert.equal(moment([2012, 0, 9]).isoWeek(), 2, 'Jan 9 2012 should be iso week 2');
- assert.equal(moment([2012, 0, 15]).isoWeek(), 2, 'Jan 15 2012 should be iso week 2');
- });
- test('iso weeks year starting monday', function (assert) {
- assert.equal(moment([2007, 0, 1]).isoWeek(), 1, 'Jan 1 2007 should be iso week 1');
- assert.equal(moment([2007, 0, 7]).isoWeek(), 1, 'Jan 7 2007 should be iso week 1');
- assert.equal(moment([2007, 0, 8]).isoWeek(), 2, 'Jan 8 2007 should be iso week 2');
- assert.equal(moment([2007, 0, 14]).isoWeek(), 2, 'Jan 14 2007 should be iso week 2');
- assert.equal(moment([2007, 0, 15]).isoWeek(), 3, 'Jan 15 2007 should be iso week 3');
- });
- test('iso weeks year starting tuesday', function (assert) {
- assert.equal(moment([2007, 11, 31]).isoWeek(), 1, 'Dec 31 2007 should be iso week 1');
- assert.equal(moment([2008, 0, 1]).isoWeek(), 1, 'Jan 1 2008 should be iso week 1');
- assert.equal(moment([2008, 0, 6]).isoWeek(), 1, 'Jan 6 2008 should be iso week 1');
- assert.equal(moment([2008, 0, 7]).isoWeek(), 2, 'Jan 7 2008 should be iso week 2');
- assert.equal(moment([2008, 0, 13]).isoWeek(), 2, 'Jan 13 2008 should be iso week 2');
- assert.equal(moment([2008, 0, 14]).isoWeek(), 3, 'Jan 14 2008 should be iso week 3');
- });
- test('iso weeks year starting wednesday', function (assert) {
- assert.equal(moment([2002, 11, 30]).isoWeek(), 1, 'Dec 30 2002 should be iso week 1');
- assert.equal(moment([2003, 0, 1]).isoWeek(), 1, 'Jan 1 2003 should be iso week 1');
- assert.equal(moment([2003, 0, 5]).isoWeek(), 1, 'Jan 5 2003 should be iso week 1');
- assert.equal(moment([2003, 0, 6]).isoWeek(), 2, 'Jan 6 2003 should be iso week 2');
- assert.equal(moment([2003, 0, 12]).isoWeek(), 2, 'Jan 12 2003 should be iso week 2');
- assert.equal(moment([2003, 0, 13]).isoWeek(), 3, 'Jan 13 2003 should be iso week 3');
- });
- test('iso weeks year starting thursday', function (assert) {
- assert.equal(moment([2008, 11, 29]).isoWeek(), 1, 'Dec 29 2008 should be iso week 1');
- assert.equal(moment([2009, 0, 1]).isoWeek(), 1, 'Jan 1 2009 should be iso week 1');
- assert.equal(moment([2009, 0, 4]).isoWeek(), 1, 'Jan 4 2009 should be iso week 1');
- assert.equal(moment([2009, 0, 5]).isoWeek(), 2, 'Jan 5 2009 should be iso week 2');
- assert.equal(moment([2009, 0, 11]).isoWeek(), 2, 'Jan 11 2009 should be iso week 2');
- assert.equal(moment([2009, 0, 13]).isoWeek(), 3, 'Jan 12 2009 should be iso week 3');
- });
- test('iso weeks year starting friday', function (assert) {
- assert.equal(moment([2009, 11, 28]).isoWeek(), 53, 'Dec 28 2009 should be iso week 53');
- assert.equal(moment([2010, 0, 1]).isoWeek(), 53, 'Jan 1 2010 should be iso week 53');
- assert.equal(moment([2010, 0, 3]).isoWeek(), 53, 'Jan 3 2010 should be iso week 53');
- assert.equal(moment([2010, 0, 4]).isoWeek(), 1, 'Jan 4 2010 should be iso week 1');
- assert.equal(moment([2010, 0, 10]).isoWeek(), 1, 'Jan 10 2010 should be iso week 1');
- assert.equal(moment([2010, 0, 11]).isoWeek(), 2, 'Jan 11 2010 should be iso week 2');
- });
- test('iso weeks year starting saturday', function (assert) {
- assert.equal(moment([2010, 11, 27]).isoWeek(), 52, 'Dec 27 2010 should be iso week 52');
- assert.equal(moment([2011, 0, 1]).isoWeek(), 52, 'Jan 1 2011 should be iso week 52');
- assert.equal(moment([2011, 0, 2]).isoWeek(), 52, 'Jan 2 2011 should be iso week 52');
- assert.equal(moment([2011, 0, 3]).isoWeek(), 1, 'Jan 3 2011 should be iso week 1');
- assert.equal(moment([2011, 0, 9]).isoWeek(), 1, 'Jan 9 2011 should be iso week 1');
- assert.equal(moment([2011, 0, 10]).isoWeek(), 2, 'Jan 10 2011 should be iso week 2');
- });
- test('iso weeks year starting sunday formatted', function (assert) {
- assert.equal(moment([2012, 0, 1]).format('W WW Wo'), '52 52 52nd', 'Jan 1 2012 should be iso week 52');
- assert.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st', 'Jan 2 2012 should be iso week 1');
- assert.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st', 'Jan 8 2012 should be iso week 1');
- assert.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd', 'Jan 9 2012 should be iso week 2');
- assert.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd', 'Jan 15 2012 should be iso week 2');
- });
- test('weeks plural year starting sunday', function (assert) {
- assert.equal(moment([2012, 0, 1]).weeks(), 1, 'Jan 1 2012 should be week 1');
- assert.equal(moment([2012, 0, 7]).weeks(), 1, 'Jan 7 2012 should be week 1');
- assert.equal(moment([2012, 0, 8]).weeks(), 2, 'Jan 8 2012 should be week 2');
- assert.equal(moment([2012, 0, 14]).weeks(), 2, 'Jan 14 2012 should be week 2');
- assert.equal(moment([2012, 0, 15]).weeks(), 3, 'Jan 15 2012 should be week 3');
- });
- test('iso weeks plural year starting sunday', function (assert) {
- assert.equal(moment([2012, 0, 1]).isoWeeks(), 52, 'Jan 1 2012 should be iso week 52');
- assert.equal(moment([2012, 0, 2]).isoWeeks(), 1, 'Jan 2 2012 should be iso week 1');
- assert.equal(moment([2012, 0, 8]).isoWeeks(), 1, 'Jan 8 2012 should be iso week 1');
- assert.equal(moment([2012, 0, 9]).isoWeeks(), 2, 'Jan 9 2012 should be iso week 2');
- assert.equal(moment([2012, 0, 15]).isoWeeks(), 2, 'Jan 15 2012 should be iso week 2');
- });
- test('weeks setter', function (assert) {
- assert.equal(moment([2012, 0, 1]).week(30).week(), 30, 'Setting Jan 1 2012 to week 30 should work');
- assert.equal(moment([2012, 0, 7]).week(30).week(), 30, 'Setting Jan 7 2012 to week 30 should work');
- assert.equal(moment([2012, 0, 8]).week(30).week(), 30, 'Setting Jan 8 2012 to week 30 should work');
- assert.equal(moment([2012, 0, 14]).week(30).week(), 30, 'Setting Jan 14 2012 to week 30 should work');
- assert.equal(moment([2012, 0, 15]).week(30).week(), 30, 'Setting Jan 15 2012 to week 30 should work');
- });
- test('iso weeks setter', function (assert) {
- assert.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, 'Setting Jan 1 2012 to week 25 should work');
- assert.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, 'Setting Jan 2 2012 to week 24 should work');
- assert.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, 'Setting Jan 8 2012 to week 23 should work');
- assert.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, 'Setting Jan 9 2012 to week 22 should work');
- assert.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, 'Setting Jan 15 2012 to week 21 should work');
- });
- test('iso weeks setter day of year', function (assert) {
- assert.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, 'Setting Jan 1 2012 to week 1 should be day of year 8');
- assert.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, 'Setting Jan 1 2012 to week 1 should be year 2011');
- assert.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 2 2012 to week 1 should be day of year 2');
- assert.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 8 2012 to week 1 should be day of year 8');
- assert.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 9 2012 to week 1 should be day of year 2');
- assert.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 15 2012 to week 1 should be day of year 8');
- });
- test('years with iso week 53', function (assert) {
- // Based on a table taken from https://en.wikipedia.org/wiki/ISO_week_date
- // (as downloaded on 2014-01-06) listing the 71 years in a 400-year cycle
- // that have 53 weeks; in this case reflecting the 2000 based cycle
- assert.equal(moment([2004, 11, 31]).isoWeek(), 53, 'Dec 31 2004 should be iso week 53');
- assert.equal(moment([2009, 11, 31]).isoWeek(), 53, 'Dec 31 2009 should be iso week 53');
- assert.equal(moment([2015, 11, 31]).isoWeek(), 53, 'Dec 31 2015 should be iso week 53');
- assert.equal(moment([2020, 11, 31]).isoWeek(), 53, 'Dec 31 2020 should be iso week 53');
- assert.equal(moment([2026, 11, 31]).isoWeek(), 53, 'Dec 31 2026 should be iso week 53');
- assert.equal(moment([2032, 11, 31]).isoWeek(), 53, 'Dec 31 2032 should be iso week 53');
- assert.equal(moment([2037, 11, 31]).isoWeek(), 53, 'Dec 31 2037 should be iso week 53');
- assert.equal(moment([2043, 11, 31]).isoWeek(), 53, 'Dec 31 2043 should be iso week 53');
- assert.equal(moment([2048, 11, 31]).isoWeek(), 53, 'Dec 31 2048 should be iso week 53');
- assert.equal(moment([2054, 11, 31]).isoWeek(), 53, 'Dec 31 2054 should be iso week 53');
- assert.equal(moment([2060, 11, 31]).isoWeek(), 53, 'Dec 31 2060 should be iso week 53');
- assert.equal(moment([2065, 11, 31]).isoWeek(), 53, 'Dec 31 2065 should be iso week 53');
- assert.equal(moment([2071, 11, 31]).isoWeek(), 53, 'Dec 31 2071 should be iso week 53');
- assert.equal(moment([2076, 11, 31]).isoWeek(), 53, 'Dec 31 2076 should be iso week 53');
- assert.equal(moment([2082, 11, 31]).isoWeek(), 53, 'Dec 31 2082 should be iso week 53');
- assert.equal(moment([2088, 11, 31]).isoWeek(), 53, 'Dec 31 2088 should be iso week 53');
- assert.equal(moment([2093, 11, 31]).isoWeek(), 53, 'Dec 31 2093 should be iso week 53');
- assert.equal(moment([2099, 11, 31]).isoWeek(), 53, 'Dec 31 2099 should be iso week 53');
- assert.equal(moment([2105, 11, 31]).isoWeek(), 53, 'Dec 31 2105 should be iso week 53');
- assert.equal(moment([2111, 11, 31]).isoWeek(), 53, 'Dec 31 2111 should be iso week 53');
- assert.equal(moment([2116, 11, 31]).isoWeek(), 53, 'Dec 31 2116 should be iso week 53');
- assert.equal(moment([2122, 11, 31]).isoWeek(), 53, 'Dec 31 2122 should be iso week 53');
- assert.equal(moment([2128, 11, 31]).isoWeek(), 53, 'Dec 31 2128 should be iso week 53');
- assert.equal(moment([2133, 11, 31]).isoWeek(), 53, 'Dec 31 2133 should be iso week 53');
- assert.equal(moment([2139, 11, 31]).isoWeek(), 53, 'Dec 31 2139 should be iso week 53');
- assert.equal(moment([2144, 11, 31]).isoWeek(), 53, 'Dec 31 2144 should be iso week 53');
- assert.equal(moment([2150, 11, 31]).isoWeek(), 53, 'Dec 31 2150 should be iso week 53');
- assert.equal(moment([2156, 11, 31]).isoWeek(), 53, 'Dec 31 2156 should be iso week 53');
- assert.equal(moment([2161, 11, 31]).isoWeek(), 53, 'Dec 31 2161 should be iso week 53');
- assert.equal(moment([2167, 11, 31]).isoWeek(), 53, 'Dec 31 2167 should be iso week 53');
- assert.equal(moment([2172, 11, 31]).isoWeek(), 53, 'Dec 31 2172 should be iso week 53');
- assert.equal(moment([2178, 11, 31]).isoWeek(), 53, 'Dec 31 2178 should be iso week 53');
- assert.equal(moment([2184, 11, 31]).isoWeek(), 53, 'Dec 31 2184 should be iso week 53');
- assert.equal(moment([2189, 11, 31]).isoWeek(), 53, 'Dec 31 2189 should be iso week 53');
- assert.equal(moment([2195, 11, 31]).isoWeek(), 53, 'Dec 31 2195 should be iso week 53');
- assert.equal(moment([2201, 11, 31]).isoWeek(), 53, 'Dec 31 2201 should be iso week 53');
- assert.equal(moment([2207, 11, 31]).isoWeek(), 53, 'Dec 31 2207 should be iso week 53');
- assert.equal(moment([2212, 11, 31]).isoWeek(), 53, 'Dec 31 2212 should be iso week 53');
- assert.equal(moment([2218, 11, 31]).isoWeek(), 53, 'Dec 31 2218 should be iso week 53');
- assert.equal(moment([2224, 11, 31]).isoWeek(), 53, 'Dec 31 2224 should be iso week 53');
- assert.equal(moment([2229, 11, 31]).isoWeek(), 53, 'Dec 31 2229 should be iso week 53');
- assert.equal(moment([2235, 11, 31]).isoWeek(), 53, 'Dec 31 2235 should be iso week 53');
- assert.equal(moment([2240, 11, 31]).isoWeek(), 53, 'Dec 31 2240 should be iso week 53');
- assert.equal(moment([2246, 11, 31]).isoWeek(), 53, 'Dec 31 2246 should be iso week 53');
- assert.equal(moment([2252, 11, 31]).isoWeek(), 53, 'Dec 31 2252 should be iso week 53');
- assert.equal(moment([2257, 11, 31]).isoWeek(), 53, 'Dec 31 2257 should be iso week 53');
- assert.equal(moment([2263, 11, 31]).isoWeek(), 53, 'Dec 31 2263 should be iso week 53');
- assert.equal(moment([2268, 11, 31]).isoWeek(), 53, 'Dec 31 2268 should be iso week 53');
- assert.equal(moment([2274, 11, 31]).isoWeek(), 53, 'Dec 31 2274 should be iso week 53');
- assert.equal(moment([2280, 11, 31]).isoWeek(), 53, 'Dec 31 2280 should be iso week 53');
- assert.equal(moment([2285, 11, 31]).isoWeek(), 53, 'Dec 31 2285 should be iso week 53');
- assert.equal(moment([2291, 11, 31]).isoWeek(), 53, 'Dec 31 2291 should be iso week 53');
- assert.equal(moment([2296, 11, 31]).isoWeek(), 53, 'Dec 31 2296 should be iso week 53');
- assert.equal(moment([2303, 11, 31]).isoWeek(), 53, 'Dec 31 2303 should be iso week 53');
- assert.equal(moment([2308, 11, 31]).isoWeek(), 53, 'Dec 31 2308 should be iso week 53');
- assert.equal(moment([2314, 11, 31]).isoWeek(), 53, 'Dec 31 2314 should be iso week 53');
- assert.equal(moment([2320, 11, 31]).isoWeek(), 53, 'Dec 31 2320 should be iso week 53');
- assert.equal(moment([2325, 11, 31]).isoWeek(), 53, 'Dec 31 2325 should be iso week 53');
- assert.equal(moment([2331, 11, 31]).isoWeek(), 53, 'Dec 31 2331 should be iso week 53');
- assert.equal(moment([2336, 11, 31]).isoWeek(), 53, 'Dec 31 2336 should be iso week 53');
- assert.equal(moment([2342, 11, 31]).isoWeek(), 53, 'Dec 31 2342 should be iso week 53');
- assert.equal(moment([2348, 11, 31]).isoWeek(), 53, 'Dec 31 2348 should be iso week 53');
- assert.equal(moment([2353, 11, 31]).isoWeek(), 53, 'Dec 31 2353 should be iso week 53');
- assert.equal(moment([2359, 11, 31]).isoWeek(), 53, 'Dec 31 2359 should be iso week 53');
- assert.equal(moment([2364, 11, 31]).isoWeek(), 53, 'Dec 31 2364 should be iso week 53');
- assert.equal(moment([2370, 11, 31]).isoWeek(), 53, 'Dec 31 2370 should be iso week 53');
- assert.equal(moment([2376, 11, 31]).isoWeek(), 53, 'Dec 31 2376 should be iso week 53');
- assert.equal(moment([2381, 11, 31]).isoWeek(), 53, 'Dec 31 2381 should be iso week 53');
- assert.equal(moment([2387, 11, 31]).isoWeek(), 53, 'Dec 31 2387 should be iso week 53');
- assert.equal(moment([2392, 11, 31]).isoWeek(), 53, 'Dec 31 2392 should be iso week 53');
- assert.equal(moment([2398, 11, 31]).isoWeek(), 53, 'Dec 31 2398 should be iso week 53');
- });
- test('count years with iso week 53', function (assert) {
- // Based on https://en.wikipedia.org/wiki/ISO_week_date (as seen on 2014-01-06)
- // stating that there are 71 years in a 400-year cycle that have 53 weeks;
- // in this case reflecting the 2000 based cycle
- var count = 0, i;
- for (i = 0; i < 400; i++) {
- count += (moment([2000 + i, 11, 31]).isoWeek() === 53) ? 1 : 0;
- }
- assert.equal(count, 71, 'Should have 71 years in 400-year cycle with iso week 53');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('weeks in year');
- test('isoWeeksInYear', function (assert) {
- assert.equal(moment([2004]).isoWeeksInYear(), 53, '2004 has 53 iso weeks');
- assert.equal(moment([2005]).isoWeeksInYear(), 52, '2005 has 53 iso weeks');
- assert.equal(moment([2006]).isoWeeksInYear(), 52, '2006 has 53 iso weeks');
- assert.equal(moment([2007]).isoWeeksInYear(), 52, '2007 has 52 iso weeks');
- assert.equal(moment([2008]).isoWeeksInYear(), 52, '2008 has 53 iso weeks');
- assert.equal(moment([2009]).isoWeeksInYear(), 53, '2009 has 53 iso weeks');
- assert.equal(moment([2010]).isoWeeksInYear(), 52, '2010 has 52 iso weeks');
- assert.equal(moment([2011]).isoWeeksInYear(), 52, '2011 has 52 iso weeks');
- assert.equal(moment([2012]).isoWeeksInYear(), 52, '2012 has 52 iso weeks');
- assert.equal(moment([2013]).isoWeeksInYear(), 52, '2013 has 52 iso weeks');
- assert.equal(moment([2014]).isoWeeksInYear(), 52, '2014 has 52 iso weeks');
- assert.equal(moment([2015]).isoWeeksInYear(), 53, '2015 has 53 iso weeks');
- });
- test('weeksInYear doy/dow = 1/4', function (assert) {
- moment.locale('1/4', {week: {dow: 1, doy: 4}});
- assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks');
- assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks');
- assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks');
- assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
- assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
- assert.equal(moment([2009]).weeksInYear(), 53, '2009 has 53 weeks');
- assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks');
- assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks');
- assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks');
- assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
- assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
- assert.equal(moment([2015]).weeksInYear(), 53, '2015 has 53 weeks');
- });
- test('weeksInYear doy/dow = 6/12', function (assert) {
- moment.locale('6/12', {week: {dow: 6, doy: 12}});
- assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks');
- assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks');
- assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks');
- assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
- assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
- assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks');
- assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 52 weeks');
- assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks');
- assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks');
- assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
- assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
- assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks');
- });
- test('weeksInYear doy/dow = 1/7', function (assert) {
- moment.locale('1/7', {week: {dow: 1, doy: 7}});
- assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks');
- assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks');
- assert.equal(moment([2006]).weeksInYear(), 53, '2006 has 53 weeks');
- assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
- assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
- assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks');
- assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks');
- assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks');
- assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 52 weeks');
- assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
- assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
- assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks');
- });
- test('weeksInYear doy/dow = 0/6', function (assert) {
- moment.locale('0/6', {week: {dow: 0, doy: 6}});
- assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks');
- assert.equal(moment([2005]).weeksInYear(), 53, '2005 has 53 weeks');
- assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks');
- assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks');
- assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks');
- assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks');
- assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks');
- assert.equal(moment([2011]).weeksInYear(), 53, '2011 has 52 weeks');
- assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks');
- assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks');
- assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks');
- assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks');
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- function isNearSpringDST() {
- return moment().subtract(1, 'day').utcOffset() !== moment().add(1, 'day').utcOffset();
- }
- module$1('zone switching');
- test('local to utc, keepLocalTime = true', function (assert) {
- var m = moment(),
- fmt = 'YYYY-DD-MM HH:mm:ss';
- assert.equal(m.clone().utc(true).format(fmt), m.format(fmt), 'local to utc failed to keep local time');
- });
- test('local to utc, keepLocalTime = false', function (assert) {
- var m = moment();
- assert.equal(m.clone().utc().valueOf(), m.valueOf(), 'local to utc failed to keep utc time (implicit)');
- assert.equal(m.clone().utc(false).valueOf(), m.valueOf(), 'local to utc failed to keep utc time (explicit)');
- });
- test('local to zone, keepLocalTime = true', function (assert) {
- test.expectedDeprecations('moment().zone');
- var m = moment(),
- fmt = 'YYYY-DD-MM HH:mm:ss',
- z;
- // Apparently there is -12:00 and +14:00
- // https://en.wikipedia.org/wiki/UTC+14:00
- // https://en.wikipedia.org/wiki/UTC-12:00
- for (z = -12; z <= 14; ++z) {
- assert.equal(m.clone().zone(z * 60, true).format(fmt), m.format(fmt),
- 'local to zone(' + z + ':00) failed to keep local time');
- }
- });
- test('local to zone, keepLocalTime = false', function (assert) {
- test.expectedDeprecations('moment().zone');
- var m = moment(),
- z;
- // Apparently there is -12:00 and +14:00
- // https://en.wikipedia.org/wiki/UTC+14:00
- // https://en.wikipedia.org/wiki/UTC-12:00
- for (z = -12; z <= 14; ++z) {
- assert.equal(m.clone().zone(z * 60).valueOf(), m.valueOf(),
- 'local to zone(' + z + ':00) failed to keep utc time (implicit)');
- assert.equal(m.clone().zone(z * 60, false).valueOf(), m.valueOf(),
- 'local to zone(' + z + ':00) failed to keep utc time (explicit)');
- }
- });
- test('utc to local, keepLocalTime = true', function (assert) {
- // Don't test near the spring DST transition
- if (isNearSpringDST()) {
- expect(0);
- return;
- }
- var um = moment.utc(),
- fmt = 'YYYY-DD-MM HH:mm:ss';
- assert.equal(um.clone().local(true).format(fmt), um.format(fmt), 'utc to local failed to keep local time');
- });
- test('utc to local, keepLocalTime = false', function (assert) {
- var um = moment.utc();
- assert.equal(um.clone().local().valueOf(), um.valueOf(), 'utc to local failed to keep utc time (implicit)');
- assert.equal(um.clone().local(false).valueOf(), um.valueOf(), 'utc to local failed to keep utc time (explicit)');
- });
- test('zone to local, keepLocalTime = true', function (assert) {
- // Don't test near the spring DST transition
- if (isNearSpringDST()) {
- expect(0);
- return;
- }
- test.expectedDeprecations('moment().zone');
- var m = moment(),
- fmt = 'YYYY-DD-MM HH:mm:ss',
- z;
- // Apparently there is -12:00 and +14:00
- // https://en.wikipedia.org/wiki/UTC+14:00
- // https://en.wikipedia.org/wiki/UTC-12:00
- for (z = -12; z <= 14; ++z) {
- m.zone(z * 60);
- assert.equal(m.clone().local(true).format(fmt), m.format(fmt),
- 'zone(' + z + ':00) to local failed to keep local time');
- }
- });
- test('zone to local, keepLocalTime = false', function (assert) {
- test.expectedDeprecations('moment().zone');
- var m = moment(),
- z;
- // Apparently there is -12:00 and +14:00
- // https://en.wikipedia.org/wiki/UTC+14:00
- // https://en.wikipedia.org/wiki/UTC-12:00
- for (z = -12; z <= 14; ++z) {
- m.zone(z * 60);
- assert.equal(m.clone().local(false).valueOf(), m.valueOf(),
- 'zone(' + z + ':00) to local failed to keep utc time (explicit)');
- assert.equal(m.clone().local().valueOf(), m.valueOf(),
- 'zone(' + z + ':00) to local failed to keep utc time (implicit)');
- }
- });
- })));
- ;(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined'
- && typeof require === 'function' ? factory(require('../../moment')) :
- typeof define === 'function' && define.amd ? define(['../../moment'], factory) :
- factory(global.moment)
- }(this, (function (moment) { 'use strict';
- function each(array, callback) {
- var i;
- for (i = 0; i < array.length; i++) {
- callback(array[i], i, array);
- }
- }
- function objectKeys(obj) {
- if (Object.keys) {
- return Object.keys(obj);
- } else {
- // IE8
- var res = [], i;
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- res.push(i);
- }
- }
- return res;
- }
- }
- // Pick the first defined of two or three arguments.
- function defineCommonLocaleTests(locale, options) {
- test('lenient day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing ' + i + ' date check');
- }
- });
- test('lenient day of month ordinal parsing of number', function (assert) {
- var i, testMoment;
- for (i = 1; i <= 31; ++i) {
- testMoment = moment('2014 01 ' + i, 'YYYY MM Do');
- assert.equal(testMoment.year(), 2014,
- 'lenient day of month ordinal parsing of number ' + i + ' year check');
- assert.equal(testMoment.month(), 0,
- 'lenient day of month ordinal parsing of number ' + i + ' month check');
- assert.equal(testMoment.date(), i,
- 'lenient day of month ordinal parsing of number ' + i + ' date check');
- }
- });
- test('strict day of month ordinal parsing', function (assert) {
- var i, ordinalStr, testMoment;
- for (i = 1; i <= 31; ++i) {
- ordinalStr = moment([2014, 0, i]).format('YYYY MM Do');
- testMoment = moment(ordinalStr, 'YYYY MM Do', true);
- assert.ok(testMoment.isValid(), 'strict day of month ordinal parsing ' + i);
- }
- });
- test('meridiem invariant', function (assert) {
- var h, m, t1, t2;
- for (h = 0; h < 24; ++h) {
- for (m = 0; m < 60; m += 15) {
- t1 = moment.utc([2000, 0, 1, h, m]);
- t2 = moment.utc(t1.format('A h:mm'), 'A h:mm');
- assert.equal(t2.format('HH:mm'), t1.format('HH:mm'),
- 'meridiem at ' + t1.format('HH:mm'));
- }
- }
- });
- test('date format correctness', function (assert) {
- var data, tokens;
- data = moment.localeData()._longDateFormat;
- tokens = objectKeys(data);
- each(tokens, function (srchToken) {
- // Check each format string to make sure it does not contain any
- // tokens that need to be expanded.
- each(tokens, function (baseToken) {
- // strip escaped sequences
- var format = data[baseToken].replace(/(\[[^\]]*\])/g, '');
- assert.equal(false, !!~format.indexOf(srchToken),
- 'contains ' + srchToken + ' in ' + baseToken);
- });
- });
- });
- test('month parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr') {
- // I can't fix it :(
- expect(0);
- return;
- }
- function tester(format) {
- var r;
- r = moment(m.format(format), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format + ' lower strict');
- }
- for (i = 0; i < 12; ++i) {
- m = moment([2015, i, 15, 18]);
- tester('MMM');
- tester('MMM.');
- tester('MMMM');
- tester('MMMM.');
- }
- });
- test('weekday parsing correctness', function (assert) {
- var i, m;
- if (locale === 'tr' || locale === 'az' || locale === 'ro') {
- // tr, az: There is a lower-case letter (ı), that converted to
- // upper then lower changes to i
- // ro: there is the letter ț which behaves weird under IE8
- expect(0);
- return;
- }
- function tester(format) {
- var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString();
- r = moment(m.format(format), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg);
- r = moment(m.format(format).toLocaleUpperCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper');
- r = moment(m.format(format).toLocaleLowerCase(), format);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower');
- r = moment(m.format(format), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict');
- r = moment(m.format(format).toLocaleUpperCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper strict');
- r = moment(m.format(format).toLocaleLowerCase(), format, true);
- assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict');
- }
- for (i = 0; i < 7; ++i) {
- m = moment.utc([2015, 0, i + 1, 18]);
- tester('dd');
- tester('ddd');
- tester('dddd');
- }
- });
- test('valid localeData', function (assert) {
- assert.equal(moment().localeData().months().length, 12, 'months should return 12 months');
- assert.equal(moment().localeData().monthsShort().length, 12, 'monthsShort should return 12 months');
- assert.equal(moment().localeData().weekdays().length, 7, 'weekdays should return 7 days');
- assert.equal(moment().localeData().weekdaysShort().length, 7, 'weekdaysShort should return 7 days');
- assert.equal(moment().localeData().weekdaysMin().length, 7, 'monthsShort should return 7 days');
- });
- }
- function setupDeprecationHandler(test, moment$$1, scope) {
- test._expectedDeprecations = null;
- test._observedDeprecations = null;
- test._oldSupress = moment$$1.suppressDeprecationWarnings;
- moment$$1.suppressDeprecationWarnings = true;
- test.expectedDeprecations = function () {
- test._expectedDeprecations = arguments;
- test._observedDeprecations = [];
- };
- moment$$1.deprecationHandler = function (name, msg) {
- var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
- if (deprecationId === -1) {
- throw new Error('Unexpected deprecation thrown name=' +
- name + ' msg=' + msg);
- }
- test._observedDeprecations[deprecationId] = 1;
- };
- }
- function teardownDeprecationHandler(test, moment$$1, scope) {
- moment$$1.suppressDeprecationWarnings = test._oldSupress;
- if (test._expectedDeprecations != null) {
- var missedDeprecations = [];
- each(test._expectedDeprecations, function (deprecationPattern, id) {
- if (test._observedDeprecations[id] !== 1) {
- missedDeprecations.push(deprecationPattern);
- }
- });
- if (missedDeprecations.length !== 0) {
- throw new Error('Expected deprecation warnings did not happen: ' +
- missedDeprecations.join(' '));
- }
- }
- }
- function matchedDeprecation(name, msg, deprecations) {
- if (deprecations == null) {
- return -1;
- }
- for (var i = 0; i < deprecations.length; ++i) {
- if (name != null && name === deprecations[i]) {
- return i;
- }
- if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
- return i;
- }
- }
- return -1;
- }
- /*global QUnit:false*/
- var test = QUnit.test;
- var expect = QUnit.expect;
- function module$1 (name, lifecycle) {
- QUnit.module(name, {
- setup : function () {
- moment.locale('en');
- moment.createFromInputFallback = function (config) {
- throw new Error('input not handled by moment: ' + config._i);
- };
- setupDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.setup) {
- lifecycle.setup();
- }
- },
- teardown : function () {
- teardownDeprecationHandler(test, moment, 'core');
- if (lifecycle && lifecycle.teardown) {
- lifecycle.teardown();
- }
- }
- });
- }
- module$1('zones', {
- 'setup': function () {
- test.expectedDeprecations('moment().zone');
- }
- });
- test('set zone', function (assert) {
- var zone = moment();
- zone.zone(0);
- assert.equal(zone.zone(), 0, 'should be able to set the zone to 0');
- zone.zone(60);
- assert.equal(zone.zone(), 60, 'should be able to set the zone to 60');
- zone.zone(-60);
- assert.equal(zone.zone(), -60, 'should be able to set the zone to -60');
- });
- test('set zone shorthand', function (assert) {
- var zone = moment();
- zone.zone(1);
- assert.equal(zone.zone(), 60, 'setting the zone to 1 should imply hours and convert to 60');
- zone.zone(-1);
- assert.equal(zone.zone(), -60, 'setting the zone to -1 should imply hours and convert to -60');
- zone.zone(15);
- assert.equal(zone.zone(), 900, 'setting the zone to 15 should imply hours and convert to 900');
- zone.zone(-15);
- assert.equal(zone.zone(), -900, 'setting the zone to -15 should imply hours and convert to -900');
- zone.zone(16);
- assert.equal(zone.zone(), 16, 'setting the zone to 16 should imply minutes');
- zone.zone(-16);
- assert.equal(zone.zone(), -16, 'setting the zone to -16 should imply minutes');
- });
- test('set zone with string', function (assert) {
- var zone = moment();
- zone.zone('+00:00');
- assert.equal(zone.zone(), 0, 'set the zone with a timezone string');
- zone.zone('2013-03-07T07:00:00-08:00');
- assert.equal(zone.zone(), 480, 'set the zone with a string that does not begin with the timezone');
- zone.zone('2013-03-07T07:00:00+0100');
- assert.equal(zone.zone(), -60, 'set the zone with a string that uses the +0000 syntax');
- zone.zone('2013-03-07T07:00:00+02');
- assert.equal(zone.zone(), -120, 'set the zone with a string that uses the +00 syntax');
- zone.zone('03-07-2013T07:00:00-08:00');
- assert.equal(zone.zone(), 480, 'set the zone with a string with a non-ISO 8601 date');
- });
- test('change hours when changing the zone', function (assert) {
- var zone = moment.utc([2000, 0, 1, 6]);
- zone.zone(0);
- assert.equal(zone.hour(), 6, 'UTC 6AM should be 6AM at +0000');
- zone.zone(60);
- assert.equal(zone.hour(), 5, 'UTC 6AM should be 5AM at -0100');
- zone.zone(-60);
- assert.equal(zone.hour(), 7, 'UTC 6AM should be 7AM at +0100');
- });
- test('change minutes when changing the zone', function (assert) {
- var zone = moment.utc([2000, 0, 1, 6, 31]);
- zone.zone(0);
- assert.equal(zone.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000');
- zone.zone(30);
- assert.equal(zone.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030');
- zone.zone(-30);
- assert.equal(zone.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030');
- zone.zone(1380);
- assert.equal(zone.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380');
- });
- test('distance from the unix epoch', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA),
- zoneC = moment(zoneA),
- zoneD = moment(zoneA),
- zoneE = moment(zoneA);
- zoneB.utc();
- assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc');
- zoneC.zone(-60);
- assert.equal(+zoneA, +zoneC, 'moment should equal moment.zone(-60)');
- zoneD.zone(480);
- assert.equal(+zoneA, +zoneD, 'moment should equal moment.zone(480)');
- zoneE.zone(1000);
- assert.equal(+zoneA, +zoneE, 'moment should equal moment.zone(1000)');
- });
- test('update offset after changing any values', function (assert) {
- var oldOffset = moment.updateOffset,
- m = moment.utc([2000, 6, 1]);
- moment.updateOffset = function (mom, keepTime) {
- if (mom.__doChange) {
- if (+mom > 962409600000) {
- mom.zone(120, keepTime);
- } else {
- mom.zone(60, keepTime);
- }
- }
- };
- assert.equal(m.format('ZZ'), '+0000', 'should be at +0000');
- assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone');
- m.__doChange = true;
- m.add(1, 'h');
- assert.equal(m.format('ZZ'), '-0200', 'should be at -0200');
- assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone');
- m.subtract(1, 'h');
- assert.equal(m.format('ZZ'), '-0100', 'should be at -0100');
- assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone');
- moment.updateOffset = oldOffset;
- });
- test('getters and setters', function (assert) {
- var a = moment([2011, 5, 20]);
- assert.equal(a.clone().zone(120).year(2012).year(), 2012, 'should get and set year correctly');
- assert.equal(a.clone().zone(120).month(1).month(), 1, 'should get and set month correctly');
- assert.equal(a.clone().zone(120).date(2).date(), 2, 'should get and set date correctly');
- assert.equal(a.clone().zone(120).day(1).day(), 1, 'should get and set day correctly');
- assert.equal(a.clone().zone(120).hour(1).hour(), 1, 'should get and set hour correctly');
- assert.equal(a.clone().zone(120).minute(1).minute(), 1, 'should get and set minute correctly');
- });
- test('getters', function (assert) {
- var a = moment.utc([2012, 0, 1, 0, 0, 0]);
- assert.equal(a.clone().zone(120).year(), 2011, 'should get year correctly');
- assert.equal(a.clone().zone(120).month(), 11, 'should get month correctly');
- assert.equal(a.clone().zone(120).date(), 31, 'should get date correctly');
- assert.equal(a.clone().zone(120).hour(), 22, 'should get hour correctly');
- assert.equal(a.clone().zone(120).minute(), 0, 'should get minute correctly');
- assert.equal(a.clone().zone(-120).year(), 2012, 'should get year correctly');
- assert.equal(a.clone().zone(-120).month(), 0, 'should get month correctly');
- assert.equal(a.clone().zone(-120).date(), 1, 'should get date correctly');
- assert.equal(a.clone().zone(-120).hour(), 2, 'should get hour correctly');
- assert.equal(a.clone().zone(-120).minute(), 0, 'should get minute correctly');
- assert.equal(a.clone().zone(-90).year(), 2012, 'should get year correctly');
- assert.equal(a.clone().zone(-90).month(), 0, 'should get month correctly');
- assert.equal(a.clone().zone(-90).date(), 1, 'should get date correctly');
- assert.equal(a.clone().zone(-90).hour(), 1, 'should get hour correctly');
- assert.equal(a.clone().zone(-90).minute(), 30, 'should get minute correctly');
- });
- test('from', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA).zone(720),
- zoneC = moment(zoneA).zone(360),
- zoneD = moment(zoneA).zone(-690),
- other = moment(zoneA).add(35, 'm');
- assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones');
- assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones');
- assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones');
- });
- test('diff', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA).zone(720),
- zoneC = moment(zoneA).zone(360),
- zoneD = moment(zoneA).zone(-690),
- other = moment(zoneA).add(35, 'm');
- assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones');
- assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones');
- });
- test('unix offset and timestamp', function (assert) {
- var zoneA = moment(),
- zoneB = moment(zoneA).zone(720),
- zoneC = moment(zoneA).zone(360),
- zoneD = moment(zoneA).zone(-690);
- assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones');
- assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones');
- assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones');
- assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones');
- assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones');
- assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones');
- });
- test('cloning', function (assert) {
- assert.equal(moment().zone(120).clone().zone(), 120, 'explicit cloning should retain the zone');
- assert.equal(moment().zone(-120).clone().zone(), -120, 'explicit cloning should retain the zone');
- assert.equal(moment(moment().zone(120)).zone(), 120, 'implicit cloning should retain the zone');
- assert.equal(moment(moment().zone(-120)).zone(), -120, 'implicit cloning should retain the zone');
- });
- test('start of / end of', function (assert) {
- var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450);
- assert.equal(a.clone().startOf('day').hour(), 0, 'start of day should work on moments with a zone');
- assert.equal(a.clone().startOf('day').minute(), 0, 'start of day should work on moments with a zone');
- assert.equal(a.clone().startOf('hour').minute(), 0, 'start of hour should work on moments with a zone');
- assert.equal(a.clone().endOf('day').hour(), 23, 'end of day should work on moments with a zone');
- assert.equal(a.clone().endOf('day').minute(), 59, 'end of day should work on moments with a zone');
- assert.equal(a.clone().endOf('hour').minute(), 59, 'end of hour should work on moments with a zone');
- });
- test('reset zone with moment#utc', function (assert) {
- var a = moment.utc([2012]).zone(480);
- assert.equal(a.clone().hour(), 16, 'different zone should have different hour');
- assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset');
- });
- test('reset zone with moment#local', function (assert) {
- var a = moment([2012]).zone(480);
- assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset');
- });
- test('toDate', function (assert) {
- var zoneA = new Date(),
- zoneB = moment(zoneA).zone(720).toDate(),
- zoneC = moment(zoneA).zone(360).toDate(),
- zoneD = moment(zoneA).zone(-690).toDate();
- assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp');
- assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp');
- assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp');
- });
- test('same / before / after', function (assert) {
- var zoneA = moment().utc(),
- zoneB = moment(zoneA).zone(120),
- zoneC = moment(zoneA).zone(-120);
- assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same');
- assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same');
- assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour');
- assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour');
- zoneA.add(1, 'hour');
- assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets');
- assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets');
- assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets');
- assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets');
- zoneA.subtract(2, 'hour');
- assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets');
- assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets');
- assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets');
- assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets');
- });
- test('add / subtract over dst', function (assert) {
- var oldOffset = moment.updateOffset,
- m = moment.utc([2000, 2, 31, 3]);
- moment.updateOffset = function (mom, keepTime) {
- if (mom.clone().utc().month() > 2) {
- mom.zone(-60, keepTime);
- } else {
- mom.zone(0, keepTime);
- }
- };
- assert.equal(m.hour(), 3, 'should start at 00:00');
- m.add(24, 'hour');
- assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst');
- m.subtract(24, 'hour');
- assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst');
- m.add(1, 'day');
- assert.equal(m.hour(), 3, 'adding 1 day should have the same hour');
- m.subtract(1, 'day');
- assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour');
- m.add(1, 'month');
- assert.equal(m.hour(), 3, 'adding 1 month should have the same hour');
- m.subtract(1, 'month');
- assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour');
- moment.updateOffset = oldOffset;
- });
- test('isDST', function (assert) {
- var oldOffset = moment.updateOffset;
- moment.updateOffset = function (mom, keepTime) {
- if (mom.month() > 2 && mom.month() < 9) {
- mom.zone(-60, keepTime);
- } else {
- mom.zone(0, keepTime);
- }
- };
- assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst');
- assert.ok(moment().month(6).isDST(), 'Jul should be summer dst');
- assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst');
- moment.updateOffset = function (mom) {
- if (mom.month() > 2 && mom.month() < 9) {
- mom.zone(0);
- } else {
- mom.zone(-60);
- }
- };
- assert.ok(moment().month(0).isDST(), 'Jan should be winter dst');
- assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst');
- assert.ok(moment().month(11).isDST(), 'Dec should be winter dst');
- moment.updateOffset = oldOffset;
- });
- test('zone names', function (assert) {
- test.expectedDeprecations();
- assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty');
- assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty');
- assert.equal(moment().zoneName(), '', 'Local zone name should be empty');
- assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty');
- assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC');
- assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC');
- assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time');
- assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time');
- });
- test('hours alignment with UTC', function (assert) {
- assert.equal(moment().zone(120).hasAlignedHourOffset(), true);
- assert.equal(moment().zone(-180).hasAlignedHourOffset(), true);
- assert.equal(moment().zone(90).hasAlignedHourOffset(), false);
- assert.equal(moment().zone(-90).hasAlignedHourOffset(), false);
- });
- test('hours alignment with other zone', function (assert) {
- var m = moment().zone(120);
- assert.equal(m.hasAlignedHourOffset(moment().zone(180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(90)), false);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-90)), false);
- m = moment().zone(90);
- assert.equal(m.hasAlignedHourOffset(moment().zone(180)), false);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), false);
- assert.equal(m.hasAlignedHourOffset(moment().zone(30)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-30)), true);
- m = moment().zone(-60);
- assert.equal(m.hasAlignedHourOffset(moment().zone(180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(90)), false);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-90)), false);
- m = moment().zone(25);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-35)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(85)), true);
- assert.equal(m.hasAlignedHourOffset(moment().zone(35)), false);
- assert.equal(m.hasAlignedHourOffset(moment().zone(-85)), false);
- });
- test('parse zone', function (assert) {
- var m = moment('2013-01-01T00:00:00-13:00').parseZone();
- assert.equal(m.zone(), 13 * 60);
- assert.equal(m.hours(), 0);
- });
- test('parse zone static', function (assert) {
- var m = moment.parseZone('2013-01-01T00:00:00-13:00');
- assert.equal(m.zone(), 13 * 60);
- assert.equal(m.hours(), 0);
- });
- test('parse zone with more arguments', function (assert) {
- test.expectedDeprecations();
- var m;
- m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ');
- assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format');
- m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true);
- assert.equal(m.isValid(), false, 'accept input, format and strict flag');
- m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']);
- assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats');
- });
- test('parse zone with a timezone from the format string', function (assert) {
- var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone();
- assert.equal(m.zone(), 4 * 60);
- });
- test('parse zone without a timezone included in the format string', function (assert) {
- var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone();
- assert.equal(m.zone(), -11 * 60);
- });
- test('timezone format', function (assert) {
- assert.equal(moment().zone(-60).format('ZZ'), '+0100', '-60 -> +0100');
- assert.equal(moment().zone(-90).format('ZZ'), '+0130', '-90 -> +0130');
- assert.equal(moment().zone(-120).format('ZZ'), '+0200', '-120 -> +0200');
- assert.equal(moment().zone(+60).format('ZZ'), '-0100', '+60 -> -0100');
- assert.equal(moment().zone(+90).format('ZZ'), '-0130', '+90 -> -0130');
- assert.equal(moment().zone(+120).format('ZZ'), '-0200', '+120 -> -0200');
- });
- test('parse zone without a timezone', function (assert) {
- test.expectedDeprecations();
- var m1 = moment.parseZone('2016-02-01T00:00:00');
- var m2 = moment.parseZone('2016-02-01T00:00:00Z');
- var m3 = moment.parseZone('2016-02-01T00:00:00+00:00'); //Someone might argue this is not necessary, you could even argue that is wrong being here.
- var m4 = moment.parseZone('2016-02-01T00:00:00+0000'); //Someone might argue this is not necessary, you could even argue that is wrong being here.
- assert.equal(
- m1.format('M D YYYY HH:mm:ss ZZ'),
- '2 1 2016 00:00:00 +0000',
- 'Not providing a timezone should keep the time and change the zone to 0'
- );
- assert.equal(
- m2.format('M D YYYY HH:mm:ss ZZ'),
- '2 1 2016 00:00:00 +0000',
- 'Not providing a timezone should keep the time and change the zone to 0'
- );
- assert.equal(
- m3.format('M D YYYY HH:mm:ss ZZ'),
- '2 1 2016 00:00:00 +0000',
- 'Not providing a timezone should keep the time and change the zone to 0'
- );
- assert.equal(
- m4.format('M D YYYY HH:mm:ss ZZ'),
- '2 1 2016 00:00:00 +0000',
- 'Not providing a timezone should keep the time and change the zone to 0'
- );
- });
- test('parse zone with a minutes unit abs less than 16 should retain minutes', function (assert) {
- //ensure when minutes are explicitly parsed, they are retained
- //instead of converted to hours, even if less than 16
- var n = moment.parseZone('2013-01-01T00:00:00-00:15');
- assert.equal(n.utcOffset(), -15);
- assert.equal(n.zone(), 15);
- assert.equal(n.hour(), 0);
- var o = moment.parseZone('2013-01-01T00:00:00+00:15');
- assert.equal(o.utcOffset(), 15);
- assert.equal(o.zone(), -15);
- assert.equal(o.hour(), 0);
- });
- })));
|