diff --git a/src/locale/ro/_lib/formatLong/index.js b/src/locale/ro/_lib/formatLong/index.js index bc2380b203..e6411b9a93 100644 --- a/src/locale/ro/_lib/formatLong/index.js +++ b/src/locale/ro/_lib/formatLong/index.js @@ -1,12 +1,41 @@ import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js' -var formatLong = buildFormatLongFn({ - LT: 'h:mm aa', - LTS: 'h:mm:ss aa', - L: 'MM/DD/YYYY', - LL: 'MMMM D YYYY', - LLL: 'MMMM D YYYY h:mm aa', - LLLL: 'dddd, MMMM D YYYY h:mm aa' -}) +var dateFormats = { + full: 'EEEE, d MMMM yyyy', + long: 'd MMMM yyyy', + medium: 'd MMM yyyy', + short: 'dd/MM/yyyy' +} + +var timeFormats = { + full: 'HH:mm:ss zzzz', + long: 'HH:mm:ss z', + medium: 'HH:mm:ss', + short: 'HH:mm' +} + +var dateTimeFormats = { + full: "{{date}} 'la' {{time}}", + long: "{{date}} 'la' {{time}}", + medium: '{{date}}, {{time}}', + short: '{{date}}, {{time}}' +} + +var formatLong = { + date: buildFormatLongFn({ + formats: dateFormats, + defaultWidth: 'full' + }), + + time: buildFormatLongFn({ + formats: timeFormats, + defaultWidth: 'full' + }), + + dateTime: buildFormatLongFn({ + formats: dateTimeFormats, + defaultWidth: 'full' + }) +} export default formatLong diff --git a/src/locale/ro/_lib/formatRelative/index.js b/src/locale/ro/_lib/formatRelative/index.js index 5c13dcd8b6..777f603393 100644 --- a/src/locale/ro/_lib/formatRelative/index.js +++ b/src/locale/ro/_lib/formatRelative/index.js @@ -1,12 +1,12 @@ var formatRelativeLocale = { - lastWeek: '[last] dddd [at] LT', - yesterday: '[yesterday at] LT', - today: '[today at] LT', - tomorrow: '[tomorrow at] LT', - nextWeek: 'dddd [at] LT', - other: 'L' + lastWeek: "eeee 'trecută la' p", + yesterday: "'ieri la' p", + today: "'astăzi la' p", + tomorrow: "'mâine la' p", + nextWeek: "eeee 'viitoare la' p", + other: 'P' } -export default function formatRelative (token, date, baseDate, options) { +export default function formatRelative(token, date, baseDate, options) { return formatRelativeLocale[token] } diff --git a/src/locale/ro/_lib/localize/index.js b/src/locale/ro/_lib/localize/index.js index aa3befa0b1..a16697df91 100644 --- a/src/locale/ro/_lib/localize/index.js +++ b/src/locale/ro/_lib/localize/index.js @@ -1,21 +1,94 @@ import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js' -import buildLocalizeArrayFn from '../../../_lib/buildLocalizeArrayFn/index.js' -var weekdayValues = { - narrow: ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'], - short: ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'], - long: ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbăta'] +var eraValues = { + narrow: ['Î', 'D'], + abbreviated: ['Î.d.C.', 'D.C.'], + wide: ['Înainte de Cristos', 'După Cristos'] +} + +var quarterValues = { + narrow: ['1', '2', '3', '4'], + abbreviated: ['T1', 'T2', 'T3', 'T4'], + wide: ['primul trimestru', 'al doilea trimestru', 'al treilea trimestru', 'al patrulea trimestru'] } var monthValues = { - short: ['ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec'], - long: ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'] + narrow: ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], + abbreviated: ['ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec'], + wide: ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'] +} + +var dayValues = { + narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'], + short: ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'], + abbreviated: ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'], + wide: ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'] } -var timeOfDayValues = { - uppercase: ['AM', 'PM'], - lowercase: ['am', 'pm'], - long: ['a.m.', 'p.m.'] +var dayPeriodValues = { + narrow: { + am: 'a', + pm: 'p', + midnight: 'mn', + noon: 'ami', + morning: 'dim', + afternoon: 'da', + evening: 's', + night: 'n' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'miezul nopții', + noon: 'amiază', + morning: 'dimineață', + afternoon: 'după-amiază', + evening: 'seară', + night: 'noapte' + }, + wide: { + am: 'a.m.', + pm: 'p.m.', + midnight: 'miezul nopții', + noon: 'amiază', + morning: 'dimineață', + afternoon: 'după-amiază', + evening: 'seară', + night: 'noapte' + } +} + +var formattingDayPeriodValues = { + narrow: { + am: 'a', + pm: 'p', + midnight: 'mn', + noon: 'amiază', + morning: 'dimineață', + afternoon: 'după-amiază', + evening: 'seară', + night: 'noapte' + }, + abbreviated: { + am: 'AM', + pm: 'PM', + midnight: 'miezul nopții', + noon: 'amiază', + morning: 'dimineață', + afternoon: 'după-amiază', + evening: 'seară', + night: 'noapte' + }, + wide: { + am: 'a.m.', + pm: 'p.m.', + midnight: 'miezul nopții', + noon: 'amiază', + morning: 'dimineață', + afternoon: 'după-amiază', + evening: 'seară', + night: 'noapte' + } } function ordinalNumber (dirtyNumber) { @@ -25,14 +98,36 @@ function ordinalNumber (dirtyNumber) { var localize = { ordinalNumber: ordinalNumber, - weekday: buildLocalizeFn(weekdayValues, 'long'), - weekdays: buildLocalizeArrayFn(weekdayValues, 'long'), - month: buildLocalizeFn(monthValues, 'long'), - months: buildLocalizeArrayFn(monthValues, 'long'), - timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function (hours) { - return (hours / 12) >= 1 ? 1 : 0 + + era: buildLocalizeFn({ + values: eraValues, + defaultWidth: 'wide' }), - timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long') + + quarter: buildLocalizeFn({ + values: quarterValues, + defaultWidth: 'wide', + argumentCallback: function (quarter) { + return Number(quarter) - 1 + } + }), + + month: buildLocalizeFn({ + values: monthValues, + defaultWidth: 'wide' + }), + + day: buildLocalizeFn({ + values: dayValues, + defaultWidth: 'wide' + }), + + dayPeriod: buildLocalizeFn({ + values: dayPeriodValues, + defaultWidth: 'wide', + formattingValues: formattingDayPeriodValues, + defaulFormattingWidth: 'wide' + }) } export default localize diff --git a/src/locale/ro/_lib/match/index.js b/src/locale/ro/_lib/match/index.js index 20c30c9d5b..9a01f295b5 100644 --- a/src/locale/ro/_lib/match/index.js +++ b/src/locale/ro/_lib/match/index.js @@ -1,47 +1,117 @@ -import buildMatchFn from '../../../_lib/buildMatchFn/index.js' -import buildParseFn from '../../../_lib/buildParseFn/index.js' import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js' -import parseDecimal from '../../../_lib/parseDecimal/index.js' +import buildMatchFn from '../../../_lib/buildMatchFn/index.js' + +var matchOrdinalNumberPattern = /^(\d+)?/i +var parseOrdinalNumberPattern = /\d+/i + +var matchEraPatterns = { + narrow: /^(Î|D)/i, + abbreviated: /^(Î\.?\s?d\.?\s?C\.?|Î\.?\s?e\.?\s?n\.?|D\.?\s?C\.?|e\.?\s?n\.?)/i, + wide: /^(Înainte de Cristos|Înaintea erei noastre|După Cristos|Era noastră)/i +} -var matchOrdinalNumbersPattern = /^(\d+)(th|st|nd|rd)?/i +var parseEraPatterns = { + any: [/^ÎC/i, /^DC/i], + wide: [/^(Înainte de Cristos|Înaintea erei noastre)/i, /^(După Cristos|Era noastră)/i] +} -var matchWeekdaysPatterns = { - narrow: /^(su|mo|tu|we|th|fr|sa)/i, - short: /^(sun|mon|tue|wed|thu|fri|sat)/i, - long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i +var matchQuarterPatterns = { + narrow: /^[1234]/i, + abbreviated: /^T[1234]/i, + wide: /^trimestrul [1234]/i } -var parseWeekdayPatterns = { - any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] +var parseQuarterPatterns = { + any: [/1/i, /2/i, /3/i, /4/i] } -var matchMonthsPatterns = { - short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, - long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i +var matchMonthPatterns = { + narrow: /^[ifmaasond]/i, + abbreviated: /^(ian|feb|mar|apr|mai|iun|iul|aug|sep|oct|noi|dec)/i, + wide: /^(ianuarie|februarie|martie|aprilie|mai|iunie|iulie|august|septembrie|octombrie|noiembrie|decembrie)/i } var parseMonthPatterns = { - any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] + narrow: [/^i/i, /^f/i, /^m/i, /^a/i, /^m/i, /^i/i, /^i/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i], + any: [/^ia/i, /^f/i, /^mar/i, /^ap/i, /^mai/i, /^iun/i, /^iul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i] +} + +var matchDayPatterns = { + narrow: /^[dlmjvs]/i, + short: /^(d|l|ma|mi|j|v|s)/i, + abbreviated: /^(dum|lun|mar|mie|jo|vi|sâ)/i, + wide: /^(duminica|luni|marţi|miercuri|joi|vineri|sâmbătă)/i } -var matchTimesOfDayPatterns = { - short: /^(am|pm)/i, - long: /^([ap]\.?\s?m\.?)/i +var parseDayPatterns = { + narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i], + any: [/^d/i, /^l/i, /^ma/i, /^mi/i, /^j/i, /^v/i, /^s/i] } -var parseTimeOfDayPatterns = { - any: [/^a/i, /^p/i] +var matchDayPeriodPatterns = { + narrow: /^(a|p|mn|a|(dimineaţa|după-amiaza|seara|noaptea))/i, + any: /^([ap]\.?\s?m\.?|miezul nopții|amiaza|(dimineaţa|după-amiaza|seara|noaptea))/i +} + +var parseDayPeriodPatterns = { + any: { + am: /^a/i, + pm: /^p/i, + midnight: /^mn/i, + noon: /amiaza/i, + morning: /dimineaţa/i, + afternoon: /după-amiaza/i, + evening: /seara/i, + night: /noaptea/i + } } var match = { - ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern), - ordinalNumber: parseDecimal, - weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'), - weekday: buildParseFn(parseWeekdayPatterns, 'any'), - months: buildMatchFn(matchMonthsPatterns, 'long'), - month: buildParseFn(parseMonthPatterns, 'any'), - timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'), - timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any') + ordinalNumber: buildMatchPatternFn({ + matchPattern: matchOrdinalNumberPattern, + parsePattern: parseOrdinalNumberPattern, + valueCallback: function (value) { + return parseInt(value, 10) + } + }), + + era: buildMatchFn({ + matchPatterns: matchEraPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseEraPatterns, + defaultParseWidth: 'any' + }), + + quarter: buildMatchFn({ + matchPatterns: matchQuarterPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseQuarterPatterns, + defaultParseWidth: 'any', + valueCallback: function (index) { + return index + 1 + } + }), + + month: buildMatchFn({ + matchPatterns: matchMonthPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseMonthPatterns, + defaultParseWidth: 'any' + }), + + day: buildMatchFn({ + matchPatterns: matchDayPatterns, + defaultMatchWidth: 'wide', + parsePatterns: parseDayPatterns, + defaultParseWidth: 'any' + }), + + dayPeriod: buildMatchFn({ + matchPatterns: matchDayPeriodPatterns, + defaultMatchWidth: 'any', + parsePatterns: parseDayPeriodPatterns, + defaultParseWidth: 'any' + }) } export default match diff --git a/src/locale/ro/index.js b/src/locale/ro/index.js index 27a7ecb5fb..9700780cdf 100644 --- a/src/locale/ro/index.js +++ b/src/locale/ro/index.js @@ -1,8 +1,8 @@ -// import formatDistance from './_lib/formatDistance/index.js' -// import formatLong from './_lib/formatLong/index.js' -// import formatRelative from './_lib/formatRelative/index.js' -// import localize from './_lib/localize/index.js' -// import match from './_lib/match/index.js' +import formatDistance from './_lib/formatDistance/index.js' +import formatLong from './_lib/formatLong/index.js' +import formatRelative from './_lib/formatRelative/index.js' +import localize from './_lib/localize/index.js' +import match from './_lib/match/index.js' /** * @type {Locale} @@ -11,19 +11,19 @@ * @language Romanian * @iso-639-2 ron * @author Sergiu Munteanu [@jsergiu]{@link https://github.com/jsergiu} + * @author Adrian Ocneanu [@aocneanu]{@link https://github.com/aocneanu} + * @author Mihai Ocneanu [@gandesc]{@link https://github.com/gandesc} */ -// var locale = { -// formatDistance: formatDistance, -// formatLong: formatLong, -// formatRelative: formatRelative, -// localize: localize, -// match: match, -// options: { -// weekStartsOn: 1 /* Monday */, -// firstWeekContainsDate: 1 -// } -// } +var locale = { + formatDistance: formatDistance, + formatLong: formatLong, + formatRelative: formatRelative, + localize: localize, + match: match, + options: { + weekStartsOn: 1 /* Monday */, + firstWeekContainsDate: 1 + } +} -// export default locale - -throw new Error('ro locale is currently unavailable. Please check the progress of converting this locale to v2.0.0 in this issue on Github: TBA') +export default locale diff --git a/src/locale/ro/test.js b/src/locale/ro/test.js index 512c5f60ce..3c0c950a0e 100644 --- a/src/locale/ro/test.js +++ b/src/locale/ro/test.js @@ -1,9 +1,499 @@ // @flow /* eslint-env mocha */ -// import assert from 'power-assert' -// import locale from '.' +import assert from "power-assert"; +import locale from "."; -describe.skip('ro locale', function () { +import format from "../../format"; +import formatDistance from "../../formatDistance"; +import formatDistanceStrict from "../../formatDistanceStrict"; +import formatRelative from "../../formatRelative"; +import parse from "../../parse"; -}) +describe("ro locale", function() { + context("with `format`", function() { + var date = new Date(1986, 3 /* Apr */, 5, 10, 32, 0, 900); + + it("era", function() { + var result = format(date, "G, GGGG, GGGGG", { locale: locale }); + assert(result === "D.C., După Cristos, D"); + }); + + describe("year", function() { + it("ordinal regular year", function() { + var result = format(date, "'anul' yo", { locale: locale }); + assert(result === "anul 1986"); + }); + + it("ordinal local week-numbering year", function() { + var result = format(date, "'an' Yo", { locale: locale }); + assert(result === "an 1986"); + }); + }); + + describe("quarter", function() { + it("formatting quarter", function() { + var result = format(date, "'trimestrul' Qo, QQQ, QQQQ, QQQQQ", { + locale: locale + }); + assert(result === "trimestrul 2, T2, al doilea trimestru, 2"); + }); + + it("stand-alone quarter", function() { + var result = format(date, "'trimestrul' qo, qqq, qqqq, qqqqq", { + locale: locale + }); + assert(result === "trimestrul 2, T2, al doilea trimestru, 2"); + }); + }); + + describe("month", function() { + it("formatting month", function() { + var result = format(date, "do MMMM", { locale: locale }); + assert(result === "5 aprilie"); + }); + + it("stand-alone month", function() { + var result = format(date, "'luna' Lo, LLL, LLLL, LLLLL", { + locale: locale + }); + assert(result === "luna 4, apr, aprilie, A"); + }); + }); + + describe("week", function() { + it("ordinal local week of year", function() { + var date = new Date(1986, 3 /* Apr */, 6); + var result = format(date, "'săptămână' wo", { locale: locale }); + assert(result === "săptămână 14"); + }); + + it("ordinal ISO week of year", function() { + var date = new Date(1986, 3 /* Apr */, 6); + var result = format(date, "'săptămână ISO' Io", { locale: locale }); + assert(result === "săptămână ISO 14"); + }); + }); + + describe("day", function() { + it("ordinal date", function() { + var result = format(date, "'astăzi este' do", { locale: locale }); + assert(result === "astăzi este 5"); + }); + + it("ordinal day of year", function() { + var result = format(date, "'ziua' Do 'a anului'", { locale: locale }); + assert(result === "ziua 95 a anului"); + }); + }); + + describe("week day", function() { + it("day of week", function() { + var result = format(date, "E, EEEE, EEEEE, EEEEEE", { locale: locale }); + assert(result === "sâm, sâmbătă, s, sâ"); + }); + + it("ordinal day of week", function() { + var result = format(date, "'ziua' eo 'din săptămână'", { + locale: locale + }); + assert(result === "ziua 6 din săptămână"); + }); + }); + + describe("day period and hour", function() { + it("ordinal hour", function() { + var result = format(date, "'ora' ho", { locale: locale }); + assert(result === "ora 10"); + }); + + it("AM, PM", function() { + var result = format(date, "h a, h aaaa, haaaaa", { locale: locale }); + assert(result === "10 AM, 10 a.m., 10a"); + }); + + it("AM, PM, noon, midnight", function() { + var result = format( + new Date(1986, 3 /* Apr */, 6, 0), + "b, bbbb, bbbbb", + { locale: locale } + ); + assert(result === "miezul nopții, miezul nopții, mn"); + }); + + it("flexible day periods", function() { + it("works as expected", function() { + var result = format(date, "h B", { locale: locale }); + assert(result === "10 de la mañana"); + }); + }); + }); + + it("ordinal minute", function() { + var result = format(date, "'minutul' mo", { locale: locale }); + assert(result === "minutul 32"); + }); + + it("ordinal second", function() { + var result = format(date, "'secunda' so", { locale: locale }); + assert(result === "secunda 0"); + }); + + describe("long format", function() { + it("short date", function() { + var result = format(date, "P", { locale: locale }); + assert(result === "05/04/1986"); + }); + + it("medium date", function() { + var result = format(date, "PP", { locale: locale }); + assert(result === "5 apr 1986"); + }); + + it("long date", function() { + var result = format(date, "PPP", { locale: locale }); + assert(result === "5 aprilie 1986"); + }); + + it("full date", function() { + var result = format(date, "PPPP", { locale: locale }); + assert(result === "sâmbătă, 5 aprilie 1986"); + }); + + it("short time", function() { + var result = format(date, "p", { locale: locale }); + assert(result === "10:32"); + }); + + it("medium time", function() { + var result = format(date, "pp", { locale: locale }); + assert(result === "10:32:00"); + }); + + it("short date + time", function() { + var result = format(date, "Pp", { locale: locale }); + assert(result === "05/04/1986, 10:32"); + }); + + it("medium date + time", function() { + var result = format(date, "PPpp", { locale: locale }); + assert(result === "5 apr 1986, 10:32:00"); + }); + + it("long date + time", function() { + var result = format(date, "PPPp", { locale: locale }); + assert(result === "5 aprilie 1986 la 10:32"); + }); + + it("full date + time", function() { + var result = format(date, "PPPPp", { locale: locale }); + assert(result === "sâmbătă, 5 aprilie 1986 la 10:32"); + }); + }); + }); + + context("with `formatDistance`", function() { + it("works as expected", function() { + var result = formatDistance( + new Date(1986, 3, 4, 10, 32, 25), + new Date(1986, 3, 4, 10, 32, 0), + { locale: locale, includeSeconds: true } + ); + assert(result === "jumătate de minut"); + }); + + context("when `addSuffix` option is true", function() { + it("adds a future suffix", function() { + var result = formatDistance( + new Date(1986, 3, 4, 10, 32, 7), + new Date(1986, 3, 4, 10, 32, 0), + { locale: locale, includeSeconds: true, addSuffix: true } + ); + assert(result === "în mai puțin de 10 secunde"); + }); + + it("adds a past suffix", function() { + var result = formatDistance( + new Date(1986, 3, 4, 10, 32, 0), + new Date(1986, 3, 4, 11, 32, 0), + { locale: locale, addSuffix: true } + ); + assert(result === "circa 1 oră în urmă"); + }); + }); + }); + + context("with `formatDistanceStrict`", function() { + it("works as expected", function() { + var result = formatDistanceStrict( + new Date(1986, 3, 4, 10, 32, 0), + new Date(1986, 3, 4, 12, 32, 0), + { locale: locale, unit: "minute" } + ); + assert(result === "120 minute"); + }); + + describe("when `addSuffix` option is true", function() { + it("adds a future suffix", function() { + var result = formatDistanceStrict( + new Date(1986, 3, 4, 10, 32, 25), + new Date(1986, 3, 4, 10, 32, 0), + { locale: locale, addSuffix: true } + ); + assert(result === "în 25 secunde"); + }); + + it("adds a past suffix", function() { + var result = formatDistanceStrict( + new Date(1986, 3, 4, 10, 32, 0), + new Date(1986, 3, 4, 11, 32, 0), + { locale: locale, addSuffix: true } + ); + assert(result === "1 oră în urmă"); + }); + }); + }); + + context("with `formatRelative`", function() { + var baseDate = new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 900); + + it("last week", function() { + var result = formatRelative(new Date(1986, 3 /* Apr */, 1), baseDate, { + locale: locale + }); + assert(result === "marți trecută la 00:00"); + }); + + it("yesterday", function() { + var result = formatRelative( + new Date(1986, 3 /* Apr */, 3, 22, 22), + baseDate, + { locale: locale } + ); + assert(result === "ieri la 22:22"); + }); + + it("today", function() { + var result = formatRelative( + new Date(1986, 3 /* Apr */, 4, 16, 50), + baseDate, + { locale: locale } + ); + assert(result === "astăzi la 16:50"); + }); + + it("tomorrow", function() { + var result = formatRelative( + new Date(1986, 3 /* Apr */, 5, 7, 30), + baseDate, + { locale: locale } + ); + assert(result === "mâine la 07:30"); + }); + + it("next week", function() { + var result = formatRelative( + new Date(1986, 3 /* Apr */, 6, 12, 0), + baseDate, + { locale: locale } + ); + assert(result === "duminică viitoare la 12:00"); + }); + + it("after the next week", function() { + var result = formatRelative( + new Date(1986, 3 /* Apr */, 11, 16, 50), + baseDate, + { locale: locale } + ); + assert(result === "11/04/1986"); + }); + }); + + context("with `parse`", function() { + var baseDate = new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 900); + + describe("era", function() { + it("abbreviated", function() { + var result = parse("10000 Î.d.C.", "yyyyy G", baseDate, { + locale: locale + }); + assert.deepEqual(result, new Date(-9999, 0 /* Jan */, 1)); + }); + + it("wide", function() { + var result = parse("2018 După Cristos", "yyyy GGGG", baseDate, { + locale: locale + }); + assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1)); + }); + + it("narrow", function() { + var result = parse("44 î", "y GGGGG", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(-43, 0 /* Jan */, 1)); + }); + }); + + it("ordinal year", function() { + var result = parse("2017", "yo", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(2017, 0 /* Jan */, 1)); + }); + + describe("quarter", function() { + it("ordinal", function() { + var result = parse("1", "Qo", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1)); + }); + + it("abbreviated", function() { + var result = parse("T3", "QQQ", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 6 /* Jul */, 1)); + }); + + it("wide", function() { + var result = parse("trimestrul 4", "QQQQ", baseDate, { + locale: locale + }); + assert.deepEqual(result, new Date(1986, 9 /* Oct */, 1)); + }); + + it("narrow", function() { + var result = parse("1", "QQQQQ", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1)); + }); + }); + + describe("month", function() { + it("ordinal", function() { + var result = parse("6", "Mo", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 5 /* Jun */, 1)); + }); + + it("abbreviated", function() { + var result = parse("noi", "MMM", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 10 /* Nov */, 1)); + }); + + it("wide", function() { + var result = parse("februarie", "MMMM", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 1 /* Feb */, 1)); + }); + + it("narrow", function() { + var result = parse("I", "MMMMM", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1)); + }); + }); + + it("ordinal week of year", function() { + var result = parse("49", "wo", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 10 /* Nov */, 31)); + }); + + it("ordinal day of month", function() { + var result = parse("28", "do", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 28)); + }); + + it("ordinal day of year", function() { + var result = parse("200", "Do", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 6 /* Jul */, 19)); + }); + + describe("day of week", function() { + it("abbreviated", function() { + var result = parse("lun", "E", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31)); + }); + + it("wide", function() { + var result = parse("marţi", "EEEE", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1)); + }); + + it("narrow", function() { + var result = parse("m", "EEEEE", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1)); + }); + + it("short", function() { + var result = parse("j", "EEEEEE", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 3)); + }); + }); + + it("ordinal local day of week", function() { + var result = parse( + "ziua 2 din săptămână", + "'ziua' eo 'din săptămână'", + baseDate, + { locale: locale } + ); + assert.deepEqual(result, new Date(1986, 3 /* Mar */, 1)); + }); + + describe("AM, PM", function() { + it("abbreviated", function() { + var result = parse("5 AM", "h a", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 5)); + }); + + it("wide", function() { + var result = parse("5 p.m.", "h aaaa", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 17)); + }); + + it("narrow", function() { + var result = parse("11 a", "h aaaaa", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 11)); + }); + }); + + describe("AM, PM, noon, midnight", function() { + it("abbreviated", function() { + var result = parse("a", "b", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4)); + }); + + it("wide", function() { + var result = parse("miezul nopții", "bbbb", baseDate, { + locale: locale + }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0)); + }); + + it("narrow", function() { + var result = parse("mn", "bbbbb", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0)); + }); + }); + + describe("flexible day period", function() { + it("abbreviated", function() { + var result = parse("2 noaptea", "h B", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 2)); + }); + + it("wide", function() { + var result = parse("12 după-amiaza", "h BBBB", baseDate, { + locale: locale + }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12)); + }); + + it("narrow", function() { + var result = parse("5 seara", "h BBBBB", baseDate, { locale: locale }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 17)); + }); + }); + + it("ordinal time", function() { + var dateString = "ora 1, minutul 2, secunda 3"; + var formatString = "'ora' ho, 'minutul' mo, 'secunda' so"; + var result = parse(dateString, formatString, baseDate, { + locale: locale + }); + assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1, 2, 3)); + }); + }); +});