Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setup query #8

Merged
merged 8 commits into from Oct 19, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 7 additions & 4 deletions example/jiffy_example.dart
@@ -1,8 +1,11 @@
import 'package:jiffy/jiffy.dart';

main() async {
var j = Jiffy("2019, 10, 16 10:00:00 am", "yyyy, MM, dd h:mm:ss a");
print(j.yMMMMdjm);
print(Jiffy().unix());
print(j.valueOf());
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2011-9-19', "yyyy-MM-dd");
var jiffy3 = Jiffy('2011-11-25', "yyyy-MM-dd");

// print(Jiffy()..add(1, "y").);

print(jiffy1.isBetween(jiffy2, jiffy3, "n"));
}
75 changes: 53 additions & 22 deletions lib/src/jiffy.dart
Expand Up @@ -37,9 +37,11 @@ class Jiffy {

static String _defaultLocale = "en";
static Future<String> locale([String locale]) async {
await initializeDateFormatting();
Intl.defaultLocale = locale ?? "en";
_defaultLocale = locale ?? "en";
if (locale != null) {
await initializeDateFormatting();
Intl.defaultLocale = locale;
_defaultLocale = locale;
}
return Future.value(_defaultLocale);
}

Expand Down Expand Up @@ -202,7 +204,7 @@ class Jiffy {
break;
case "M":
int date = _daysInMonthArray[_dateTime.month];
if (Jiffy().isLeapYear(_dateTime.year) && _dateTime.month == 2) {
if (Jiffy()._isLeapYear(_dateTime.year) && _dateTime.month == 2) {
date = 29;
}
_dateTime =
Expand Down Expand Up @@ -241,7 +243,7 @@ class Jiffy {

int _daysInMonth(int year, int month) {
var result = _daysInMonthArray[month];
if (month == 2 && isLeapYear(year)) result++;
if (month == 2 && _isLeapYear(year)) result++;
return result;
}

Expand Down Expand Up @@ -381,23 +383,52 @@ class Jiffy {
}

// QUERY
// bool isBefore(Jiffy jiffy) {}
//
// bool isAfter(Jiffy jiffy) {}
//
// bool isSame(Jiffy jiffy) {}
//
// bool isSameOrBefore(Jiffy jiffy) {}
//
// bool isSameOrAfter(Jiffy jiffy) {}
//
bool isLeapYear(int year) =>
bool isBefore(Jiffy jiffy, [String units = "ms"]) {
units = validateUnits(units);
if (units == "ms") {
return valueOf() < jiffy.valueOf();
}
endOf(units);
return valueOf() < jiffy.valueOf();
}

bool isAfter(Jiffy jiffy, [String units = "ms"]) {
units = validateUnits(units);
if (units == "ms") {
return valueOf() > jiffy.valueOf();
}
startOf(units);
return jiffy.valueOf() < valueOf();
}

bool isSame(Jiffy jiffy, [String units = "ms"]) {
units = validateUnits(units);
if (units == "ms") {
return valueOf() == jiffy.valueOf();
}
int jiffyMs = jiffy.valueOf();
return startOf(units).millisecondsSinceEpoch <= jiffyMs &&
jiffyMs <= endOf(units).millisecondsSinceEpoch;
}

bool isSameOrBefore(Jiffy jiffy, [String units = "ms"]) {
return isSame(jiffy, units) || isBefore(jiffy, units);
}

bool isSameOrAfter(Jiffy jiffy, [String units = "ms"]) {
return isSame(jiffy, units) || isAfter(jiffy, units);
}

bool isBetween(Jiffy jiffyFrom, Jiffy jiffyTo, [String units = "ms"]) {
return isAfter(jiffyFrom, units) && isBefore(jiffyTo, units);
}

bool _isLeapYear(int year) =>
(year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
//
// bool get isLeapYear => _isLeapYear();
//
// bool isJiffy(var input) {}
//
// bool isDateTime(var input) {}

bool get isLeapYear => _isLeapYear(_dateTime.year);

static bool isJiffy(var input) => input is Jiffy;

static bool isDateTime(var input) => input is DateTime;
}
7 changes: 4 additions & 3 deletions lib/src/utils/normalize_units.dart
Expand Up @@ -27,7 +27,7 @@ String normalizeUnits(String unit) {
lowerCaseUnit == "w") {
return "w";
} else if (lowerCaseUnit == "month" || lowerCaseUnit == "months") {
return "sM";
return "M";
} else if (lowerCaseUnit == "year" ||
lowerCaseUnit == "years" ||
lowerCaseUnit == "y") {
Expand All @@ -41,9 +41,10 @@ String validateUnits(String unit) {
unit = unit == "M" ? unit : normalizeUnits(unit);
if (unit == "0") {
throw JiffyException(
"Invalid unit passed, please visit to see all available units")
"Invalid unit passed, the following units are available 'year',"
" 'month', 'week', 'day', 'hour', 'minute',"
" 'second', 'millisecond'")
.cause;
// TODO: ADD GITHUB README URL DOC TO UNITS
}
return unit;
}
70 changes: 70 additions & 0 deletions test/jifft_query_test.dart
@@ -0,0 +1,70 @@
import 'package:jiffy/jiffy.dart';
import 'package:test/test.dart';

void main() {
group('Test Jiffy query', () {
test("Test isBefore method", () {
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2010-12-31', "yyyy-MM-dd");
var jiffy3 = Jiffy('2011-01-01', "yyyy-MM-dd");
expect(jiffy1.isBefore(Jiffy('2010-10-21', "yyyy-MM-dd")), true);
expect(jiffy1.isBefore(jiffy2, "y"), false);
expect(jiffy1.isBefore(jiffy3, "y"), true);
});
test("Test isAfter method", () {
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2010-01-01', "yyyy-MM-dd");
var jiffy3 = Jiffy('2009-12-31', "yyyy-MM-dd");
expect(jiffy1.isAfter(Jiffy('2010-10-19', "yyyy-MM-dd")), true);
expect(jiffy1.isAfter(jiffy2, "y"), false);
expect(jiffy1.isAfter(jiffy3, "y"), true);
});
test("Test isSame method", () {
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2009-12-31', "yyyy-MM-dd");
var jiffy3 = Jiffy('2010-01-01', "yyyy-MM-dd");
expect(jiffy1.isSame(Jiffy('2010-10-20', "yyyy-MM-dd")), true);
expect(jiffy1.isSame(jiffy2, "y"), false);
expect(jiffy1.isSame(jiffy3, "y"), true);
});
test("Test isSameOrBefore method", () {
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2009-12-31', "yyyy-MM-dd");
var jiffy3 = Jiffy('2010-12-31', "yyyy-MM-dd");
expect(jiffy1.isSameOrBefore(Jiffy('2010-10-21', "yyyy-MM-dd")), true);
expect(jiffy1.isSameOrBefore(Jiffy('2010-10-19', "yyyy-MM-dd")), false);
expect(jiffy1.isSameOrBefore(jiffy2, "y"), false);
expect(jiffy1.isSameOrBefore(jiffy3, "y"), true);
});
test("Test isSameOrAfter method", () {
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2011-12-31', "yyyy-MM-dd");
var jiffy3 = Jiffy('2010-01-01', "yyyy-MM-dd");
expect(jiffy1.isSameOrAfter(Jiffy('2010-10-19', "yyyy-MM-dd")), true);
expect(jiffy1.isSameOrAfter(Jiffy('2010-10-21', "yyyy-MM-dd")), false);
expect(jiffy1.isSameOrAfter(jiffy2, "y"), false);
expect(jiffy1.isSameOrAfter(jiffy3, "y"), true);
});
test("Test isBetween method", () {
var jiffy1 = Jiffy('2010-10-20', "yyyy-MM-dd");
var jiffy2 = Jiffy('2010-10-19', "yyyy-MM-dd");
var jiffy3 = Jiffy('2010-10-25', "yyyy-MM-dd");
var jiffy4 = Jiffy('2010-01-01', "yyyy-MM-dd");
var jiffy5 = Jiffy('2012-01-01', "yyyy-MM-dd");
expect(jiffy1.isBetween(jiffy2, jiffy3), true);
expect(jiffy1.isBetween(jiffy4, jiffy5, "y"), false);
});
test("Test isLeapYear method", () {
expect(Jiffy('2010', "yyyy").isLeapYear, false);
expect(Jiffy('2016', "yyyy").isLeapYear, true);
});
test("Test isJiffy method", () {
expect(Jiffy.isJiffy(DateTime.now()), false);
expect(Jiffy.isJiffy(Jiffy()), true);
});
test("Test isDateTime method", () {
expect(Jiffy.isDateTime(Jiffy()), false);
expect(Jiffy.isDateTime(DateTime.now()), true);
});
});
}
2 changes: 2 additions & 0 deletions test/jiffy_display_test.dart
Expand Up @@ -10,6 +10,8 @@ void main() {
"Today is 16 Oct");
expect(Jiffy("2019, 10, 16", "yyyy, MM, dd").format("MMMMEEEEd"),
"Wednesday, October 16");
expect(Jiffy("2019, 10, 16", "yyyy, MM, dd").format(),
"2019-10-16T00:00:00.000");
});
test("Test from method", () {
expect(Jiffy("2019, 10, 16", "yyyy, MM, dd").E, "Wed");
Expand Down
8 changes: 4 additions & 4 deletions test/jiffy_manipulation_test.dart
Expand Up @@ -75,7 +75,7 @@ void main() {
.add(1, "invalidUnit");
} catch (e) {
expect(e.toString(),
"JiffyException: Invalid unit passed, please visit to see all available units");
"JiffyException: Invalid unit passed, the following units are available 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'");
}
});
});
Expand Down Expand Up @@ -153,7 +153,7 @@ void main() {
.subtract(1, "invalidUnit");
} catch (e) {
expect(e.toString(),
"JiffyException: Invalid unit passed, please visit to see all available units");
"JiffyException: Invalid unit passed, the following units are available 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'");
}
});
});
Expand Down Expand Up @@ -219,7 +219,7 @@ void main() {
.startOf("invalidUnit");
} catch (e) {
expect(e.toString(),
"JiffyException: Invalid unit passed, please visit to see all available units");
"JiffyException: Invalid unit passed, the following units are available 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'");
}
});
});
Expand Down Expand Up @@ -295,7 +295,7 @@ void main() {
.endOf("invalidUnit");
} catch (e) {
expect(e.toString(),
"JiffyException: Invalid unit passed, please visit to see all available units");
"JiffyException: Invalid unit passed, the following units are available 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'");
}
});
});
Expand Down