Skip to content

Commit

Permalink
Merge pull request #1 from distributed-lab/feature/testing
Browse files Browse the repository at this point in the history
Feature/testing
  • Loading branch information
napalmpapalam authored Mar 6, 2023
2 parents 198d5c7 + e2901a7 commit fde55ff
Show file tree
Hide file tree
Showing 4 changed files with 237 additions and 2 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `all`: `tsc-alias` package to use aliases in TypeScript
- `root`: `yarn rsc` Release Sanity Check script
- `root`: Rollup and configuration file to build packages for CDN
- `tools`: Handling big numbers
- `@distributedlab/tools`: Handling big numbers
- `@distributedlab/tools`: Add tests for time.ts and duration.ts

### Changed
- `root`: Updated `README.md`
Expand Down
73 changes: 73 additions & 0 deletions packages/tools/src/duration.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { Duration } from './duration'

describe('Performs duration class unit test', () => {
test('asDays should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asDays).toStrictEqual(2)
})

test('days should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.days).toStrictEqual(2)
})

test('minutes should return correct value', () => {
const dr = new Duration({ minutes: 2 })
expect(dr.minutes).toStrictEqual(2)
})

test('asMinutes should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asMinutes).toStrictEqual(2880)
})

test('seconds should return correct value', () => {
const dr = new Duration({ seconds: 2 })
expect(dr.seconds.toString()).toStrictEqual('2')
})

test('as seconds should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asSeconds).toStrictEqual(172800)
})

test('milliseconds should return correct value', () => {
const dr = new Duration({ milliseconds: 2 })
expect(dr.milliseconds).toStrictEqual(2)
})

test('as milliseconds should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asMilliseconds).toStrictEqual(172800000)
})

test('months should return correct value', () => {
const dr = new Duration({ months: 2 })
expect(dr.months).toStrictEqual(2)
})

test('as months should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asMonths).toStrictEqual(0.06666666666666667)
})

test('hours should return correct value', () => {
const dr = new Duration({ hours: 2 })
expect(dr.hours).toStrictEqual(2)
})

test('as hours should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asHours).toStrictEqual(48)
})

test('weeks should return correct value', () => {
const dr = new Duration({ weeks: 2 })
expect(dr.weeks).toStrictEqual(2)
})

test('as weeks should return correct value', () => {
const dr = new Duration({ days: 2 })
expect(dr.asWeeks).toStrictEqual(0.2857142857142857)
})
})
3 changes: 2 additions & 1 deletion packages/tools/src/duration.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import dayjs from 'dayjs'
import { Duration as _Duration } from 'dayjs/plugin/duration'
import durationlib from 'dayjs/plugin/duration'

import { DurationUnitsObject, DurationUnitType } from '@/types'

dayjs.extend(durationlib)
export class Duration {
readonly #duration: _Duration

Expand Down
160 changes: 160 additions & 0 deletions packages/tools/src/time.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
import { Time } from './time'
describe('Performs time class unit test', () => {
test('test add function(time + 1) should return correct value', () => {
const time = new Time('2023-03-03')
time.utc(true)
time.add(1)

expect(time.toDate().getTime().toString()).toStrictEqual('1677801600001')
})
test('test add function(time + 1 min), should return correct value', () => {
const time = new Time('2023-03-03')
time.utc(true)
const plusMin = time.add(1, 'minute')
expect(plusMin.toDate().getTime().toString()).toStrictEqual('1677801660000')
})
test('test validate time, should return wrong value ', () => {
const time = new Time('wrong input')
time.utc(true)
expect(time.isValid).toStrictEqual(false)
})
test('test validate time, should return correct value', () => {
const time = new Time()
time.utc(true)
expect(time.isValid).toStrictEqual(true)
})
test('test clone time, should return correct value', () => {
const time1 = new Time()
time1.utc(true)
const clone = time1.clone()
expect(time1.toDate()).toStrictEqual(clone.toDate())
})
test('test diff func, should return negative value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time1.diff(time2)).toStrictEqual(-86400000)
})

test('test diff func, should return positive value', () => {
const time1 = new Time('2023-03-04')
const time2 = new Time('2023-03-03')
expect(time1.diff(time2)).toStrictEqual(86400000)
})

test('test timestamp, should return correct value', () => {
const time = new Time('2023-03-03')
time.utc(true)
expect(time.timestamp).toStrictEqual(1677801600)
})

test('test isSame, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-03')
expect(time2.isSame(time1.toDate())).toEqual(true)
})

test('test isSam func, should return wrong value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time2.isSame(time1.toDate())).toEqual(false)
})

test('test after func, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time2.isAfter(time1.toDate())).toEqual(true)
})

test('test after func, should return wrong value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time1.isAfter(time2.toDate())).toEqual(false)
})

test('test before func, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time1.isBefore(time2.toDate())).toEqual(true)
})

test('test before func, should return wrong value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time2.isBefore(time1.toDate())).toEqual(false)
})

test('test beforeOrSame func, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-03')
expect(time1.isSameOrBefore(time2.toDate())).toEqual(true)
})

test('test beforeOrSame func, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time1.isSameOrBefore(time2.toDate())).toEqual(true)
})

test('test beforeOrSame func, should return wrong value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time2.isSameOrBefore(time1.toDate())).toEqual(false)
})

test('test afterOrSame func, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-03')
expect(time2.isSameOrAfter(time1.toDate())).toEqual(true)
})

test('test afterOrSame func, should return correct value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time2.isSameOrAfter(time1.toDate())).toEqual(true)
})

test('test afterOrSame func, should return wrong value', () => {
const time1 = new Time('2023-03-03')
const time2 = new Time('2023-03-04')
expect(time1.isSameOrAfter(time2.toDate())).toEqual(false)
})

test('test between func, should return correct value', () => {
const time1 = new Time('2023-03-02')
const time2 = new Time('2023-03-04')
const timeBetween = new Time('2023-03-03')
expect(timeBetween.isBetween(time1.toDate(), time2.toDate())).toEqual(true)
})

test('test between func, should return wrong value', () => {
const time1 = new Time('2023-03-02')
const time2 = new Time('2023-03-04')
const timeBetween = new Time('2023-06-03')
expect(timeBetween.isBetween(time1.toDate(), time2.toDate())).toEqual(false)
})

test('test RFC3339, should return correct RFC3339', () => {
const time = new Time('2023-03-03')
time.utc(true)
expect(time.RFC3339).toEqual('2023-03-03T00:00:00Z')
})

test('test ISO, should return should correct ISO', () => {
const time = new Time('2023-03-03')
time.utc(true)
expect(time.ISO).toEqual('2023-03-03T00:00:00.000Z')
})

test('test subtract func, should return correct value', () => {
const time = new Time('2023-03-03')
time.utc(true)
const subTime = time.subtract(1, 'day')
expect(subTime.toDate().getTime()).toStrictEqual(1677715200000)
})

test('test ms, should return correct value', () => {
const time = new Time('2023-03-03')
time.utc(true)
expect(time.ms).toStrictEqual(1677801600000)
})
})

0 comments on commit fde55ff

Please sign in to comment.