diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml index f23671f..c634881 100644 --- a/.idea/libraries/Dart_SDK.xml +++ b/.idea/libraries/Dart_SDK.xml @@ -1,27 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md index f783f19..c609a52 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,14 @@ [![.github/workflows/release.yml](https://github.com/jama5262/jiffy/actions/workflows/release.yml/badge.svg)](https://github.com/jama5262/jiffy/actions/workflows/release.yml) [![codecov](https://codecov.io/gh/jama5262/jiffy/branch/master/graph/badge.svg?token=Z2EGVUGWTE)](https://codecov.io/gh/jama5262/jiffy) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Pub Version](https://img.shields.io/badge/pub-v4.1.0-blue)](https://pub.dev/packages/jiffy) -[![Platform](https://img.shields.io/badge/platform-flutter%7Cweb%7Cdart%20vm-orange)](https://github.com/jama5262/jiffy) +[![Pub Version](https://img.shields.io/badge/pub-v5.0.0-blue)](https://pub.dev/packages/jiffy) +![Platform](https://img.shields.io/badge/platform-flutter%7Cweb%7Cdart%20vm-orange) Jiffy is a Flutter (Android, IOS and Web) date time package inspired by [momentjs](https://momentjs.com/) for parsing, manipulating, querying and formatting dates -### [Full Documentation](https://github.com/jama5262/jiffy/tree/v4.1.0/doc) | [Installation](https://pub.dev/packages/jiffy#-installing-tab-) | [ChangeLog](https://pub.dev/packages/jiffy#-changelog-tab-) | [Examples](https://pub.dev/packages/jiffy#-example-tab-) +### [Full Documentation](doc) | [Installation](https://pub.dev/packages/jiffy#-installing-tab-) | [ChangeLog](https://pub.dev/packages/jiffy#-changelog-tab-) | [Examples](https://pub.dev/packages/jiffy#-example-tab-) + +#### [Follow the project board](https://github.com/jama5262/jiffy/projects/1) # Usage diff --git a/doc/README.md b/doc/README.md index 782e684..6c376a5 100644 --- a/doc/README.md +++ b/doc/README.md @@ -3,7 +3,7 @@ [![.github/workflows/release.yml](https://github.com/jama5262/jiffy/actions/workflows/release.yml/badge.svg)](https://github.com/jama5262/jiffy/actions/workflows/release.yml) [![codecov](https://codecov.io/gh/jama5262/jiffy/branch/master/graph/badge.svg?token=Z2EGVUGWTE)](https://codecov.io/gh/jama5262/jiffy) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Pub Version](https://img.shields.io/badge/pub-v4.1.0-blue)](https://pub.dev/packages/jiffy) +[![Pub Version](https://img.shields.io/badge/pub-v5.0.0-blue)](https://pub.dev/packages/jiffy) [![Platform](https://img.shields.io/badge/platform-flutter%7Cweb%7Cdart%20vm-orange)](https://github.com/jama5262/jiffy) @@ -75,8 +75,8 @@ Jiffy("2021-5-25"); // A calendar date part Jiffy("2021/5/25"); // A calendar date part separated by slash "/" Jiffy("2021525"); // Basic (short) full date Jiffy("2021-5-25 12:00:00.000"); // An hour, minute, second, and millisecond time part -Jiffy("2021-5-25T12:00:00.000"); // ISO dart format -Jiffy("2021-5-25T12:00:00.000Z"); // ISO dart format (UTC) +Jiffy("2021-5-25T12:00:00.000"); // ISO date format +Jiffy("2021-5-25T12:00:00.000Z"); // ISO date format (UTC) ``` ### String Formatting @@ -103,7 +103,7 @@ Jiffy("2021-5-25", "yyyy-MM-dd").yMMMMd; // May 25, 2021 ### Maps You can also create a Jiffy from a Map, Supported key pairs are, - + `[ year, month, day, hour, minute, second and millisecond ]`. See below ```dart Jiffy({ @@ -123,15 +123,15 @@ Jiffy({ Jiffy can also parse timestamp milliseconds and seconds. Just call `Jiffy.unix()` which return a dart Datetime. See below ```dart // Parsing a timestamp in milliseconds -Jiffy.unix(1318781876406); +Jiffy.unixFromMillisecondsSinceEpoch(1318781876406); // Parsing a timestamp in seconds -Jiffy.unix(1318781876).format(); // 2011-10-16T19:17:56.000 +Jiffy.unixFromSecondsSinceEpoch(1318781876).format(); // 2011-10-16T19:17:56.000 ``` -**_Note: `Jiffy.unix()` returns a timestamp base on local time. You can also get it in UTC which returns a UTC in dart Datetime. See below_** +**_Note: `Jiffy.unixFromMillisecondsSinceEpoch() or Jiffy.unixFromSecondsSinceEpoch` returns a timestamp base on local time. You can also get it in UTC which returns a UTC in dart Datetime. See below_** ```dart -Jiffy.unix(1318781876406).utc(); +Jiffy.unixFromMillisecondsSinceEpoch(1318781876406).utc(); ``` ### Jiffy Cloning @@ -542,6 +542,7 @@ Below are the locales that are supported in Jiffy. More will be added | Italian | it / it_ch | | Korean | ko | | Russian | ru | +| Ukrainian | uk | | Hindi | hi | | Arabic | ar / ar_ly / ar_dz / ar_kw / ar_sa / ar_ma / ar_tn | | Portuguese | pt / pt_br | @@ -551,6 +552,8 @@ Below are the locales that are supported in Jiffy. More will be added | Norwegian | nb | | Persian | fa | | Azerbaijani | az | +| Dutch | nl | +| Thailand | th | Getting and setting locales in Jiffy **_always returns a future_** diff --git a/example/jiffy_example.dart b/example/jiffy_example.dart index af02b37..6bf5f3b 100644 --- a/example/jiffy_example.dart +++ b/example/jiffy_example.dart @@ -1,5 +1,4 @@ import 'package:jiffy/jiffy.dart'; -import 'package:jiffy/src/enums/units.dart'; Future main() async { // DISPLAY diff --git a/lib/src/jiffy.dart b/lib/src/jiffy.dart index 86140e8..b261105 100644 --- a/lib/src/jiffy.dart +++ b/lib/src/jiffy.dart @@ -22,14 +22,15 @@ class Jiffy { _initializeLocale(); } - Jiffy.unix(int timestamp) { - var timestampLength = timestamp.toString().length; - if (timestampLength != 10 && timestampLength != 13) { - throw JiffyException( - 'The timestamp passed must be in seconds or millisecods e.g. 1570963450 or 1570963450123') - .cause; - } - if (timestampLength == 10) timestamp *= 1000; + Jiffy.unixFromSecondsSinceEpoch(int timestamp) { + _unix(timestamp * 1000); + } + + Jiffy.unixFromMillisecondsSinceEpoch(int timestamp) { + _unix(timestamp); + } + + void _unix(int timestamp) { _dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp); } diff --git a/lib/src/locale/availableLocales.dart b/lib/src/locale/availableLocales.dart index baaa23a..8ab1a96 100644 --- a/lib/src/locale/availableLocales.dart +++ b/lib/src/locale/availableLocales.dart @@ -12,14 +12,18 @@ import 'package:jiffy/src/locale/jaLocale.dart'; import 'package:jiffy/src/locale/koLocale.dart'; import 'package:jiffy/src/locale/locale.dart'; import 'package:jiffy/src/locale/nbLocale.dart'; +import 'package:jiffy/src/locale/nlLocale.dart'; import 'package:jiffy/src/locale/plLocale.dart'; import 'package:jiffy/src/locale/ptLocale.dart'; import 'package:jiffy/src/locale/ruLocale.dart'; +import 'package:jiffy/src/locale/thLocale.dart'; +import 'package:jiffy/src/locale/ukLocale.dart'; import 'package:jiffy/src/locale/azLocale.dart'; import 'package:jiffy/src/locale/svLocale.dart'; import 'package:jiffy/src/locale/trLocale.dart'; import 'package:jiffy/src/locale/zhCnLocale.dart'; import 'package:jiffy/src/locale/zhLocale.dart'; +import 'package:jiffy/src/locale/bnLocale.dart'; Map _availableLocales = { 'en': EnLocale(StartOfWeek.SUNDAY), @@ -59,14 +63,18 @@ Map _availableLocales = { 'ja': JaLocale(StartOfWeek.SUNDAY), 'ko': KoLocale(StartOfWeek.SUNDAY), 'ru': RuLocale(StartOfWeek.MONDAY), + 'uk': UkLocale(StartOfWeek.MONDAY), 'hi': HiLocale(StartOfWeek.SUNDAY), 'pt': PtLocale(StartOfWeek.MONDAY), 'pt_br': PtLocale(StartOfWeek.SUNDAY), 'pl': PlLocale(StartOfWeek.MONDAY), 'tr': TrLocale(StartOfWeek.MONDAY), - 'sv': SvLocale(StartOfWeek.SUNDAY), - 'nb': NbLocale(StartOfWeek.SUNDAY), + 'sv': SvLocale(StartOfWeek.MONDAY), + 'nb': NbLocale(StartOfWeek.MONDAY), 'fa': FaLocale(true, StartOfWeek.SATURDAY), + 'bn': BnLocale(StartOfWeek.SUNDAY), + 'nl': NlLocale(StartOfWeek.MONDAY), + 'th': ThLocale(StartOfWeek.SUNDAY) }; Locale getLocale(String locale) { diff --git a/lib/src/locale/bnLocale.dart b/lib/src/locale/bnLocale.dart new file mode 100644 index 0000000..f7472e9 --- /dev/null +++ b/lib/src/locale/bnLocale.dart @@ -0,0 +1,53 @@ +import 'package:jiffy/src/locale/locale.dart'; +import 'package:jiffy/src/locale/relativeTime.dart'; +import 'package:jiffy/src/enums/startOfWeek.dart'; +import 'package:jiffy/src/utils/replace.dart'; + +class BnLocale extends Locale { + StartOfWeek strtOfWeek; + BnLocale(this.strtOfWeek); + + @override + RelativeTime relativeTime() => BnRelativeTime(); + + @override + List? ordinals() => null; + + @override + StartOfWeek startOfWeek() => strtOfWeek; +} + +class BnRelativeTime extends RelativeTime { + @override + String prefixAgo() => ''; + @override + String prefixFromNow() => ''; + @override + String suffixAgo() => 'আগে'; + @override + String suffixFromNow() => 'পরে'; + @override + String lessThanOneMinute(int seconds) => 'কিছু মুহূর্ত'; + @override + String aboutAMinute(int minutes) => 'এক মিনিট'; + @override + String minutes(int minutes) => replaceToLocaleNum('$minutes মিনিট', 'bn'); + @override + String aboutAnHour(int minutes) => 'এক ঘন্টা'; + @override + String hours(int hours) => replaceToLocaleNum('$hours ঘন্টা', 'bn'); + @override + String aDay(int hours) => 'এক দিন'; + @override + String days(int days) => replaceToLocaleNum('$days দিন', 'bn'); + @override + String aboutAMonth(int days) => 'এক মাস'; + @override + String months(int months) => replaceToLocaleNum('$months মাস', 'bn'); + @override + String aboutAYear(int year) => 'এক বছর'; + @override + String years(int years) => replaceToLocaleNum('$years বছর', 'bn'); + @override + String wordSeparator() => ' '; +} diff --git a/lib/src/locale/nlLocale.dart b/lib/src/locale/nlLocale.dart new file mode 100644 index 0000000..12a7d7f --- /dev/null +++ b/lib/src/locale/nlLocale.dart @@ -0,0 +1,53 @@ +import 'package:jiffy/src/locale/locale.dart'; +import 'package:jiffy/src/locale/relativeTime.dart'; +import 'package:jiffy/src/enums/startOfWeek.dart'; + +class NlLocale extends Locale { + StartOfWeek strtOfWeek; + NlLocale(this.strtOfWeek); + + @override + RelativeTime relativeTime() => NlRelativeTime(); + + @override + List? ordinals() => ['.', '.', '.', '.']; + + @override + StartOfWeek startOfWeek() => strtOfWeek; +} + +class NlRelativeTime extends RelativeTime { + @override + String prefixAgo() => ''; + @override + String prefixFromNow() => ''; + @override + String suffixAgo() => 'geleden'; + @override + String suffixFromNow() => ''; + @override + String lessThanOneMinute(int seconds) => + seconds > 0 ? 'op dit moment' : 'een ogenblik'; + @override + String aboutAMinute(int minutes) => 'een minuut'; + @override + String minutes(int minutes) => '$minutes minuten'; + @override + String aboutAnHour(int minutes) => 'een uur'; + @override + String hours(int hours) => '$hours uur'; + @override + String aDay(int hours) => 'een dag'; + @override + String days(int days) => '$days dagen'; + @override + String aboutAMonth(int days) => 'een maand'; + @override + String months(int months) => '$months maanden'; + @override + String aboutAYear(int year) => 'een jaar'; + @override + String years(int years) => '$years jaar'; + @override + String wordSeparator() => ' '; +} diff --git a/lib/src/locale/thLocale.dart b/lib/src/locale/thLocale.dart new file mode 100644 index 0000000..0896bcc --- /dev/null +++ b/lib/src/locale/thLocale.dart @@ -0,0 +1,52 @@ +import 'package:jiffy/src/locale/locale.dart'; +import 'package:jiffy/src/locale/relativeTime.dart'; +import 'package:jiffy/src/enums/startOfWeek.dart'; + +class ThLocale extends Locale { + StartOfWeek strtOfWeek; + ThLocale(this.strtOfWeek); + + @override + RelativeTime relativeTime() => ThRelativeTime(); + + @override + List? ordinals() => null; + + @override + StartOfWeek startOfWeek() => strtOfWeek; +} + +class ThRelativeTime extends RelativeTime { + @override + String prefixAgo() => ''; + @override + String prefixFromNow() => 'อีก'; + @override + String suffixAgo() => 'ที่แล้ว'; + @override + String suffixFromNow() => ''; + @override + String lessThanOneMinute(int seconds) => 'ไม่กี่วินาที'; + @override + String aboutAMinute(int minutes) => '1 นาที'; + @override + String minutes(int minutes) => '$minutes นาที'; + @override + String aboutAnHour(int minutes) => '1 ชั่วโมง'; + @override + String hours(int hours) => '$hours ชั่วโมง'; + @override + String aDay(int hours) => '1 วัน'; + @override + String days(int days) => '$days วัน'; + @override + String aboutAMonth(int days) => '1 เดือน'; + @override + String months(int months) => '$months เดือน'; + @override + String aboutAYear(int year) => '1 ปี'; + @override + String years(int years) => '$years ปี'; + @override + String wordSeparator() => ''; +} diff --git a/lib/src/locale/ukLocale.dart b/lib/src/locale/ukLocale.dart new file mode 100644 index 0000000..e633beb --- /dev/null +++ b/lib/src/locale/ukLocale.dart @@ -0,0 +1,104 @@ +import 'package:jiffy/src/locale/locale.dart'; +import 'package:jiffy/src/locale/relativeTime.dart'; +import 'package:jiffy/src/enums/startOfWeek.dart'; + +class UkLocale extends Locale { + StartOfWeek strtOfWeek; + UkLocale(this.strtOfWeek); + + @override + RelativeTime relativeTime() => UkRelativeTime(); + + @override + List? ordinals() => null; + + @override + StartOfWeek startOfWeek() => strtOfWeek; +} + +class UkRelativeTime extends RelativeTime { + @override + String prefixAgo() => ''; + @override + String prefixFromNow() => 'через'; + @override + String suffixAgo() => 'тому'; + @override + String suffixFromNow() => ''; + @override + String lessThanOneMinute(int seconds) => 'декілька секунд'; + @override + String aboutAMinute(int minutes) => 'хвилину'; + @override + String minutes(int minutes) => '$minutes ${_convert(minutes, 'minutes')}'; + @override + String aboutAnHour(int minutes) => 'годину'; + @override + String hours(int hours) => '$hours ${_convert(hours, 'hours')}'; + @override + String aDay(int hours) => 'день'; + @override + String days(int days) => '$days ${_convert(days, 'days')}'; + @override + String aboutAMonth(int days) => 'місяць'; + @override + String months(int months) => '$months ${_convert(months, 'months')}'; + @override + String aboutAYear(int year) => 'рік'; + @override + String years(int years) => '$years ${_convert(years, 'years')}'; + @override + String wordSeparator() => ' '; +} + +String _convert(int number, String type) { + var mod = number % 10; + var modH = number % 100; + + if (mod == 1 && modH != 11) { + switch (type) { + case 'minutes': + return 'хвилину'; + case 'hours': + return 'годину'; + case 'days': + return 'день'; + case 'months': + return 'місяць'; + case 'years': + return 'рік'; + default: + return ''; + } + } else if ([2, 3, 4].contains(mod) && + ![12, 13, 14].contains(modH)) { + switch (type) { + case 'minutes': + return 'хвилини'; + case 'hours': + return 'години'; + case 'days': + return 'дні'; + case 'months': + return 'місяці'; + case 'years': + return 'роки'; + default: + return ''; + } + } + switch (type) { + case 'minutes': + return 'хвилин'; + case 'hours': + return 'годин'; + case 'days': + return 'днів'; + case 'months': + return 'місяців'; + case 'years': + return 'років'; + default: + return ''; + } +} diff --git a/lib/src/utils/replace.dart b/lib/src/utils/replace.dart index 623c123..6c6680f 100644 --- a/lib/src/utils/replace.dart +++ b/lib/src/utils/replace.dart @@ -5,6 +5,7 @@ String replaceToLocaleNum(String input, String locale) { 'en': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], 'ar': ['۰', '۱', '۲', '۳', '٤', '۵', '٦', '۷', '۸', '۹'], 'fa': ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'], + 'bn': ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'] }; for (var i = 0; i < localeNumbers['en']!.length; i++) { input = diff --git a/pubspec.yaml b/pubspec.yaml index b138d08..0a6aaf0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: jiffy description: Jiffy is a date dart package inspired by momentjs for parsing, manipulating and formatting dates -version: 4.1.0 +version: 5.0.0 homepage: https://github.com/jama5262/jiffy repository: https://github.com/jama5262/jiffy issue_tracker: https://github.com/jama5262/jiffy/issues diff --git a/test/jiffy_display_test.dart b/test/jiffy_display_test.dart index a8d7790..8044a8d 100644 --- a/test/jiffy_display_test.dart +++ b/test/jiffy_display_test.dart @@ -1,5 +1,4 @@ import 'package:jiffy/jiffy.dart'; -import 'package:jiffy/src/enums/units.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/jiffy_manipulation_test.dart b/test/jiffy_manipulation_test.dart index 6001992..65d377c 100644 --- a/test/jiffy_manipulation_test.dart +++ b/test/jiffy_manipulation_test.dart @@ -1,5 +1,4 @@ import 'package:jiffy/jiffy.dart'; -import 'package:jiffy/src/enums/units.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/jiffy_parse_test.dart b/test/jiffy_parse_test.dart index 9716d7d..70f4348 100644 --- a/test/jiffy_parse_test.dart +++ b/test/jiffy_parse_test.dart @@ -151,28 +151,18 @@ void main() { test( 'test Jiffy.unix() instance with parsing timestamp in seconds should set date time', () { - expect(Jiffy.unix(1570963450).year, + expect(Jiffy.unixFromSecondsSinceEpoch(1570963450).year, DateTime.fromMillisecondsSinceEpoch(1570963450000).year); - expect(Jiffy.unix(1570963450).month, + expect(Jiffy.unixFromSecondsSinceEpoch(1570963450).month, DateTime.fromMillisecondsSinceEpoch(1570963450000).month); }); test( 'test Jiffy.unix() instance with parsing timestamp in milliseconds should set date time', () { - expect(Jiffy.unix(1570963450000).year, + expect(Jiffy.unixFromMillisecondsSinceEpoch(1570963450000).year, DateTime.fromMillisecondsSinceEpoch(1570963450000).year); - expect(Jiffy.unix(1570963450000).month, + expect(Jiffy.unixFromMillisecondsSinceEpoch(1570963450000).month, DateTime.fromMillisecondsSinceEpoch(1570963450000).month); }); - test( - 'test Jiffy.unix() instance with parsing timestamp not in seconds or milliseconds should return exception', - () { - try { - Jiffy.unix(157096345); - } catch (e) { - expect(e.toString(), - 'JiffyException: The timestamp passed must be in seconds or millisecods e.g. 1570963450 or 1570963450123'); - } - }); }); } diff --git a/test/jiffy_query_test.dart b/test/jiffy_query_test.dart index ec373c3..160bd24 100644 --- a/test/jiffy_query_test.dart +++ b/test/jiffy_query_test.dart @@ -1,5 +1,4 @@ import 'package:jiffy/jiffy.dart'; -import 'package:jiffy/src/enums/units.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/jiffy_relative_locale_test.dart b/test/jiffy_relative_locale_test.dart index d5fb505..af9cfc5 100644 --- a/test/jiffy_relative_locale_test.dart +++ b/test/jiffy_relative_locale_test.dart @@ -19,6 +19,7 @@ void main() { expect(locales, contains('de')); expect(locales, contains('zh_cn')); expect(locales, contains('ru')); + expect(locales, contains('uk')); expect(locales, contains('az')); }); }); @@ -314,6 +315,25 @@ void main() { expect(locale.startOfWeek(), StartOfWeek.MONDAY); expect(locale.ordinals(), null); }); + test( + 'test Jiffy.locale() method with parsing uk locale should return correct date time in uk locale', + () async { + var locale = await Jiffy.locale('uk'); + expect(jiffy1.fromNow(), 'декілька секунд тому'); + expect(jiffy2.fromNow(), 'через декілька секунд'); + expect(jiffy3.fromNow(), 'хвилину тому'); + expect(jiffy5.fromNow(), '10 хвилин тому'); + expect(jiffy6.fromNow(), 'годину тому'); + expect(jiffy7.fromNow(), '10 годин тому'); + expect(jiffy8.fromNow(), 'день тому'); + expect(jiffy9.fromNow(), '10 днів тому'); + expect(jiffy10.from(Jiffy('2019-10-01')), 'місяць тому'); + expect(jiffy11.fromNow(), '10 місяців тому'); + expect(jiffy12.fromNow(), 'рік тому'); + expect(jiffy13.fromNow(), '10 років тому'); + expect(locale.startOfWeek(), StartOfWeek.MONDAY); + expect(locale.ordinals(), null); + }); test( 'test Jiffy.locale() method with parsing az locale should return correct date time in az locale', () async { @@ -425,7 +445,7 @@ void main() { expect(jiffy11.fromNow(), '10 månader sedan'); expect(jiffy12.fromNow(), 'ett år sedan'); expect(jiffy13.fromNow(), '10 år sedan'); - expect(locale.startOfWeek(), StartOfWeek.SUNDAY); + expect(locale.startOfWeek(), StartOfWeek.MONDAY); expect(locale.ordinals(), null); }); test( @@ -444,7 +464,7 @@ void main() { expect(jiffy11.fromNow(), '10 måneder siden'); expect(jiffy12.fromNow(), 'ett år siden'); expect(jiffy13.fromNow(), '10 år siden'); - expect(locale.startOfWeek(), StartOfWeek.SUNDAY); + expect(locale.startOfWeek(), StartOfWeek.MONDAY); expect(locale.ordinals(), ['.', '.', '.', '.']); }); test( @@ -466,5 +486,62 @@ void main() { expect(locale.startOfWeek(), StartOfWeek.SATURDAY); expect(locale.ordinals(), ['م', 'م', 'م', 'م']); }); + test( + 'test Jiffy.locale() method with parsing bn locale should return correct date time in bn locale', + () async { + var locale = await Jiffy.locale('bn'); + expect(jiffy1.fromNow(), 'কিছু মুহূর্ত আগে'); + expect(jiffy2.fromNow(), 'কিছু মুহূর্ত পরে'); + expect(jiffy3.fromNow(), 'এক মিনিট আগে'); + expect(jiffy5.fromNow(), '১০ মিনিট আগে'); + expect(jiffy6.fromNow(), 'এক ঘন্টা আগে'); + expect(jiffy7.fromNow(), '১০ ঘন্টা আগে'); + expect(jiffy8.fromNow(), 'এক দিন আগে'); + expect(jiffy9.fromNow(), '১০ দিন আগে'); + expect(jiffy10.from(Jiffy([2019, 10, 01])), 'এক মাস আগে'); + expect(jiffy11.fromNow(), '১০ মাস আগে'); + expect(jiffy12.fromNow(), 'এক বছর আগে'); + expect(jiffy13.fromNow(), '১০ বছর আগে'); + expect(locale.startOfWeek(), StartOfWeek.SUNDAY); + expect(locale.ordinals(), null); + }); + test( + 'test Jiffy.locale() method with parsing nl locale should return correct date time in nl locale', + () async { + var locale = await Jiffy.locale('nl'); + expect(jiffy1.fromNow(), 'een ogenblik geleden'); + expect(jiffy2.fromNow(), 'op dit moment'); + expect(jiffy3.fromNow(), 'een minuut geleden'); + expect(jiffy5.fromNow(), '10 minuten geleden'); + expect(jiffy6.fromNow(), 'een uur geleden'); + expect(jiffy7.fromNow(), '10 uur geleden'); + expect(jiffy8.fromNow(), 'een dag geleden'); + expect(jiffy9.fromNow(), '10 dagen geleden'); + expect(jiffy10.from(Jiffy('2019-10-01')), 'een maand geleden'); + expect(jiffy11.fromNow(), '10 maanden geleden'); + expect(jiffy12.fromNow(), 'een jaar geleden'); + expect(jiffy13.fromNow(), '10 jaar geleden'); + expect(locale.startOfWeek(), StartOfWeek.MONDAY); + expect(locale.ordinals(), ['.', '.', '.', '.']); + }); + test( + 'test Jiffy.locale() method with parsing th locale should return correct date time in th locale', + () async { + var locale = await Jiffy.locale('th'); + expect(jiffy1.fromNow(), 'ไม่กี่วินาทีที่แล้ว'); + expect(jiffy2.fromNow(), 'อีกไม่กี่วินาที'); + expect(jiffy3.fromNow(), '1 นาทีที่แล้ว'); + expect(jiffy5.fromNow(), '10 นาทีที่แล้ว'); + expect(jiffy6.fromNow(), '1 ชั่วโมงที่แล้ว'); + expect(jiffy7.fromNow(), '10 ชั่วโมงที่แล้ว'); + expect(jiffy8.fromNow(), '1 วันที่แล้ว'); + expect(jiffy9.fromNow(), '10 วันที่แล้ว'); + expect(jiffy10.from(Jiffy([2019, 10, 01])), '1 เดือนที่แล้ว'); + expect(jiffy11.fromNow(), '10 เดือนที่แล้ว'); + expect(jiffy12.fromNow(), '1 ปีที่แล้ว'); + expect(jiffy13.fromNow(), '10 ปีที่แล้ว'); + expect(locale.startOfWeek(), StartOfWeek.SUNDAY); + expect(locale.ordinals(), null); + }); }); }