You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
7.8 KiB
300 lines
7.8 KiB
4 weeks ago
|
import test from 'ava'
|
||
|
import Chance from '../chance.js'
|
||
|
import _ from 'lodash'
|
||
|
|
||
|
const chance = new Chance()
|
||
|
|
||
|
// chance.ampm()
|
||
|
test('ampm() returns am or pm', t => {
|
||
|
_.times(1000, () => {
|
||
|
let ampm = chance.ampm()
|
||
|
t.true(_.isString(ampm))
|
||
|
t.true(/^([ap]m)$/m.test(ampm))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.date()
|
||
|
test('date() returns a random date', t => {
|
||
|
_.times(1000, () => {
|
||
|
let date = chance.date()
|
||
|
t.true(_.isDate(date))
|
||
|
t.truthy(date.getTime())
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('date() accepts an american option', t => {
|
||
|
_.times(1000, () => {
|
||
|
let date = chance.date({ american: chance.bool() })
|
||
|
t.true(_.isDate(date))
|
||
|
t.truthy(date.getTime())
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('date() can have some default provided and obey them', t => {
|
||
|
_.times(1000, () => {
|
||
|
// One of each month type in terms of number of days.
|
||
|
let month = [0, 1, 3][Math.floor(Math.random() * 3)]
|
||
|
|
||
|
let date = chance.date({ year: 1983 })
|
||
|
t.true(_.isDate(date))
|
||
|
t.is(date.getFullYear(), 1983)
|
||
|
|
||
|
date = chance.date({ month: month })
|
||
|
t.true(_.isDate(date))
|
||
|
t.is(date.getMonth(), month)
|
||
|
|
||
|
date = chance.date({ day: 21 })
|
||
|
t.true(_.isDate(date))
|
||
|
t.is(date.getDate(), 21)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('date() can specify min and max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let bounds = {
|
||
|
min: new Date(),
|
||
|
max: new Date(new Date().getTime() + 1234567890123),
|
||
|
}
|
||
|
let date = chance.date(bounds)
|
||
|
t.true(_.isDate(date))
|
||
|
t.true(date >= bounds.min)
|
||
|
t.true(date <= bounds.max)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('date() returns a date, can specify just min', t => {
|
||
|
_.times(1000, () => {
|
||
|
let bounds = { min: new Date() }
|
||
|
let date = chance.date(bounds)
|
||
|
t.true(_.isDate(date))
|
||
|
t.true(date >= bounds.min)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('date() returns a date, can specify just max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let bounds = { max: new Date() }
|
||
|
let date = chance.date(bounds)
|
||
|
t.true(_.isDate(date))
|
||
|
t.true(date <= bounds.max)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('date() can return a string date', t => {
|
||
|
_.times(1000, () => {
|
||
|
let date = chance.date({ string: true })
|
||
|
t.true(_.isString(date))
|
||
|
t.true(/^[0-9][0-9]?\/[0-9][0-9]?\/[0-9]{4}/m.test(date))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.hammertime()
|
||
|
test('hammertime() works', t => {
|
||
|
_.times(1000, () => {
|
||
|
let hammertime = chance.hammertime()
|
||
|
t.true(_.isNumber(hammertime))
|
||
|
t.true(hammertime > 0)
|
||
|
t.true(hammertime < 8640000000000000)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.hour()
|
||
|
test('hour() returns an hour', t => {
|
||
|
_.times(1000, () => {
|
||
|
let hour = chance.hour()
|
||
|
t.true(_.isNumber(hour))
|
||
|
t.true(hour >= 1)
|
||
|
t.true(hour <= 12)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('hour() returns an hour in 24 hour format', t => {
|
||
|
_.times(1000, () => {
|
||
|
let hour = chance.hour({ twentyfour: true })
|
||
|
t.true(_.isNumber(hour))
|
||
|
t.true(hour >= 0)
|
||
|
t.true(hour <= 23)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('hour() returns an hour, can specify min and max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let hour = chance.hour({ min: 7, max: 10 })
|
||
|
t.true(_.isNumber(hour))
|
||
|
t.true(hour >= 7)
|
||
|
t.true(hour <= 10)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('hour() returns an hour, can specify just min', t => {
|
||
|
_.times(1000, () => {
|
||
|
let hour = chance.hour({ min: 7 })
|
||
|
t.true(_.isNumber(hour))
|
||
|
t.true(hour >= 7)
|
||
|
t.true(hour <= 12)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('hour() returns an hour, can specify just max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let hour = chance.hour({ max: 10 })
|
||
|
t.true(_.isNumber(hour))
|
||
|
t.true(hour >= 1)
|
||
|
t.true(hour <= 10)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.minute()
|
||
|
test('minute() returns a minute', t => {
|
||
|
_.times(1000, () => {
|
||
|
let minute = chance.minute()
|
||
|
t.true(_.isNumber(minute))
|
||
|
t.true(minute >= 0)
|
||
|
t.true(minute <= 59)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('minute() returns an minute, can specify min and max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let minute = chance.minute({ min: 18, max: 35 })
|
||
|
t.true(_.isNumber(minute))
|
||
|
t.true(minute >= 18)
|
||
|
t.true(minute <= 35)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('minute() returns an minute, can specify just min', t => {
|
||
|
_.times(1000, () => {
|
||
|
let minute = chance.minute({ min: 5 })
|
||
|
t.true(_.isNumber(minute))
|
||
|
t.true(minute >= 5)
|
||
|
t.true(minute <= 59)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('minute() returns an minute, can specify just max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let minute = chance.minute({ max: 32 })
|
||
|
t.true(_.isNumber(minute))
|
||
|
t.true(minute >= 0)
|
||
|
t.true(minute <= 32)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('month() returns a month', t => {
|
||
|
_.times(1000, () => {
|
||
|
let month = chance.month()
|
||
|
t.true(_.isString(month))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('month() will return a raw month', t => {
|
||
|
_.times(1000, () => {
|
||
|
let month = chance.month({ raw: true })
|
||
|
t.false(_.isString(month))
|
||
|
t.true(_.isObject(month))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('month() returns a month, can specify min and max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let month = chance.month({raw: true, min: 5, max: 10})
|
||
|
t.false(_.isString(month))
|
||
|
t.true(month.numeric >= 5)
|
||
|
t.true(month.numeric <= 10)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('month() returns a month, can specify just min', t => {
|
||
|
_.times(1000, () => {
|
||
|
let month = chance.month({raw: true, min: 5})
|
||
|
t.false(_.isString(month))
|
||
|
t.true(month.numeric >= 5)
|
||
|
t.true(month.numeric <= 12)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('month() returns a month, can specify just max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let month = chance.month({raw: true, max: 7})
|
||
|
t.false(_.isString(month))
|
||
|
t.true(month.numeric >= 1)
|
||
|
t.true(month.numeric <= 7)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.timestamp()
|
||
|
test('timestamp() returns a timestamp', t => {
|
||
|
_.times(1000, () => {
|
||
|
let timestamp = chance.timestamp()
|
||
|
t.true(_.isNumber(timestamp))
|
||
|
t.true(timestamp > 0)
|
||
|
t.true(timestamp <= parseInt(new Date().getTime() / 1000, 10))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.timezone()
|
||
|
test('timezone() returns a timezone', t => {
|
||
|
_.times(1000, () => {
|
||
|
let timezone = chance.timezone()
|
||
|
t.true(_.isString(timezone.name))
|
||
|
t.true(timezone.abbr.length < 6)
|
||
|
t.true(_.isNumber(timezone.offset))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.weekday()
|
||
|
test('weekday() will return a weekday as a string', t => {
|
||
|
_.times(1000, () => {
|
||
|
let weekday = chance.weekday()
|
||
|
t.true(_.isString(weekday))
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('weekday() can take work: true and obey it', t => {
|
||
|
_.times(1000, () => {
|
||
|
let weekday = chance.weekday({ weekday_only: true })
|
||
|
t.true(_.isString(weekday))
|
||
|
t.not(weekday, 'Saturday')
|
||
|
t.not(weekday, 'Sunday')
|
||
|
})
|
||
|
})
|
||
|
|
||
|
// chance.year()
|
||
|
test('year() returns a year, default between today and a century after', t => {
|
||
|
_.times(1000, () => {
|
||
|
let year = chance.year()
|
||
|
t.true(_.isString(year))
|
||
|
t.true(year >= new Date().getFullYear())
|
||
|
t.true(year <= new Date().getFullYear() + 100)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('year() returns a year, can specify min and max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let year = chance.year({ min: 2500, max: 2600 })
|
||
|
t.true(_.isString(year))
|
||
|
t.true(year >= 2500)
|
||
|
t.true(year <= 2600)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('year() returns a year, can specify just min', t => {
|
||
|
_.times(1000, () => {
|
||
|
let year = chance.year({ min: 2500 })
|
||
|
t.true(_.isString(year))
|
||
|
t.true(year >= 2500)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('year() returns a year, can specify just max', t => {
|
||
|
_.times(1000, () => {
|
||
|
let year = chance.year({ max: 2500 })
|
||
|
t.true(_.isString(year))
|
||
|
t.true(year <= 2501)
|
||
|
// Ensure year not negative. Perhaps add BCE/AD and such later,
|
||
|
// but for now just positive is good enough.
|
||
|
t.true(year >= 0)
|
||
|
})
|
||
|
})
|