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

Migrate differenceInCalendarISOWeeks function #2418

Merged
merged 2 commits into from
May 5, 2021
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMillisec
import startOfISOWeek from '../startOfISOWeek/index'
import requiredArgs from '../_lib/requiredArgs/index'

var MILLISECONDS_IN_WEEK = 604800000
const MILLISECONDS_IN_WEEK = 604800000

/**
* @name differenceInCalendarISOWeeks
Expand All @@ -25,25 +25,25 @@ var MILLISECONDS_IN_WEEK = 604800000
*
* @example
* // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?
* var result = differenceInCalendarISOWeeks(
* const result = differenceInCalendarISOWeeks(
* new Date(2014, 6, 21),
* new Date(2014, 6, 6)
* )
* //=> 3
*/
export default function differenceInCalendarISOWeeks(
dirtyDateLeft,
dirtyDateRight
) {
dirtyDateLeft: Date | number,
dirtyDateRight: Date | number
): number {
requiredArgs(2, arguments)

var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)
var startOfISOWeekRight = startOfISOWeek(dirtyDateRight)
const startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)
const startOfISOWeekRight = startOfISOWeek(dirtyDateRight)

var timestampLeft =
const timestampLeft =
startOfISOWeekLeft.getTime() -
getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)
var timestampRight =
const timestampRight =
startOfISOWeekRight.getTime() -
getTimezoneOffsetInMilliseconds(startOfISOWeekRight)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,104 +1,103 @@
// @flow
/* eslint-env mocha */

import assert from 'power-assert'
import differenceInCalendarISOWeeks from '.'

describe('differenceInCalendarISOWeeks', function() {
it('returns the number of calendar ISO weeks between the given dates', function() {
var result = differenceInCalendarISOWeeks(
describe('differenceInCalendarISOWeeks', function () {
it('returns the number of calendar ISO weeks between the given dates', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 6 /* Jul */, 8, 18, 0),
new Date(2014, 5 /* Jun */, 29, 6, 0)
)
assert(result === 2)
})

it('returns a negative number if the time value of the first date is smaller', function() {
var result = differenceInCalendarISOWeeks(
it('returns a negative number if the time value of the first date is smaller', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 5 /* Jun */, 29, 6, 0),
new Date(2014, 6 /* Jul */, 8, 18, 0)
)
assert(result === -2)
})

it('accepts timestamps', function() {
var result = differenceInCalendarISOWeeks(
it('accepts timestamps', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 6 /* Jul */, 12).getTime(),
new Date(2014, 6 /* Jul */, 2).getTime()
)
assert(result === 1)
})

describe('edge cases', function() {
it('the difference is less than an ISO week, but the given dates are in different calendar ISO weeks', function() {
var result = differenceInCalendarISOWeeks(
describe('edge cases', function () {
it('the difference is less than an ISO week, but the given dates are in different calendar ISO weeks', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 6 /* Jul */, 7),
new Date(2014, 6 /* Jul */, 6)
)
assert(result === 1)
})

it('the same for the swapped dates', function() {
var result = differenceInCalendarISOWeeks(
it('the same for the swapped dates', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 6 /* Jul */, 6),
new Date(2014, 6 /* Jul */, 7)
)
assert(result === -1)
})

it('the days of weeks of the given dates are the same', function() {
var result = differenceInCalendarISOWeeks(
it('the days of weeks of the given dates are the same', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 6 /* Jul */, 9),
new Date(2014, 6 /* Jul */, 2)
)
assert(result === 1)
})

it('the given dates are the same', function() {
var result = differenceInCalendarISOWeeks(
it('the given dates are the same', function () {
const result = differenceInCalendarISOWeeks(
new Date(2014, 8 /* Sep */, 5, 0, 0),
new Date(2014, 8 /* Sep */, 5, 0, 0)
)
assert(result === 0)
})

it('does not return -0 when the given dates are the same', () => {
function isNegativeZero(x) {
function isNegativeZero(x: number): boolean {
return x === 0 && 1 / x < 0
}

var result = differenceInCalendarISOWeeks(
const result = differenceInCalendarISOWeeks(
new Date(2014, 8 /* Sep */, 5, 0, 0),
new Date(2014, 8 /* Sep */, 5, 0, 0)
)

var resultIsNegative = isNegativeZero(result)
const resultIsNegative = isNegativeZero(result)
assert(resultIsNegative === false)
})
})

it('returns NaN if the first date is `Invalid Date`', function() {
var result = differenceInCalendarISOWeeks(
it('returns NaN if the first date is `Invalid Date`', function () {
const result = differenceInCalendarISOWeeks(
new Date(NaN),
new Date(2017, 0 /* Jan */, 1)
)
assert(isNaN(result))
})

it('returns NaN if the second date is `Invalid Date`', function() {
var result = differenceInCalendarISOWeeks(
it('returns NaN if the second date is `Invalid Date`', function () {
const result = differenceInCalendarISOWeeks(
new Date(2017, 0 /* Jan */, 1),
new Date(NaN)
)
assert(isNaN(result))
})

it('returns NaN if the both dates are `Invalid Date`', function() {
var result = differenceInCalendarISOWeeks(new Date(NaN), new Date(NaN))
it('returns NaN if the both dates are `Invalid Date`', function () {
const result = differenceInCalendarISOWeeks(new Date(NaN), new Date(NaN))
assert(isNaN(result))
})

it('throws TypeError exception if passed less than 2 arguments', function() {
it('throws TypeError exception if passed less than 2 arguments', function () {
assert.throws(differenceInCalendarISOWeeks.bind(null), TypeError)
assert.throws(differenceInCalendarISOWeeks.bind(null, 1), TypeError)
})
Expand Down