Skip to content

Commit

Permalink
test: more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kristw committed Jul 24, 2020
1 parent 820c706 commit 2c7152e
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 32 deletions.
10 changes: 5 additions & 5 deletions packages/vx-scale/src/operators/domain.ts
Expand Up @@ -11,14 +11,14 @@ export default function applyDomain<
config: ScaleConfigWithoutType<Output, DiscreteInput, ThresholdInput>,
) {
if (config.domain) {
if ('padding' in scale || 'unknown' in scale) {
// ordinal, point, band scales
scale.domain(config.domain as DiscreteInput[]);
} else if ('nice' in scale) {
if ('nice' in scale || 'quantiles' in scale) {
// continuous input scales
scale.domain(config.domain as number[] | Date[]);
} else if ('padding' in scale) {
// point and band scales
scale.domain(config.domain as DiscreteInput[]);
} else {
// threshold scale
// ordinal and threshold scale
scale.domain(config.domain as ThresholdInput[]);
}
}
Expand Down
8 changes: 4 additions & 4 deletions packages/vx-scale/test/createScale.test.ts
Expand Up @@ -40,7 +40,7 @@ describe('createScale()', () => {
});
it('utc', () => {
const scale = createScale({
type: 'time',
type: 'utc',
domain: [new Date(Date.UTC(2020, 0, 1)), new Date(Date.UTC(2020, 0, 10))],
range: [1, 10],
});
Expand All @@ -57,12 +57,12 @@ describe('createScale()', () => {
});
it('threshold', () => {
const scale = createScale({
type: 'quantize',
domain: [0, 1],
type: 'threshold',
domain: [0, 1] as number[],
range: ['red', 'white', 'green'],
});
expect(scale(-1)).toEqual('red');
expect(scale(0)).toEqual('red');
expect(scale(0)).toEqual('white');
expect(scale(0.5)).toEqual('white');
expect(scale(1)).toEqual('green');
expect(scale(1000)).toEqual('green');
Expand Down
35 changes: 29 additions & 6 deletions packages/vx-scale/test/scaleLinear.test.ts
Expand Up @@ -22,13 +22,36 @@ describe('scaleLinear()', () => {
expect(scale(10)).toEqual(10);
});
});
it('set (color) interpolate', () => {
const scale = scaleLinear({
domain: [0, 10],
range: ['#ff0000', '#000000'],
interpolate: 'lab',
describe('set (color) interpolate', () => {
it('string', () => {
const scale = scaleLinear({
domain: [0, 10],
range: ['#ff0000', '#000000'],
interpolate: 'lab',
});
expect(scale(5)).toEqual('rgb(122, 27, 11)');
});
it('config object', () => {
const scale = scaleLinear({
domain: [0, 10],
range: ['#ff0000', '#000000'],
interpolate: {
type: 'rgb',
},
});
expect(scale(5)).toEqual('rgb(128, 0, 0)');
});
it('config object with gamma', () => {
const scale = scaleLinear({
domain: [0, 10],
range: ['#ff0000', '#000000'],
interpolate: {
type: 'rgb',
gamma: 0.9,
},
});
expect(scale(5)).toEqual('rgb(118, 0, 0)');
});
expect(scale(5)).toEqual('rgb(122, 27, 11)');
});
describe('set nice', () => {
it('true', () => {
Expand Down
21 changes: 18 additions & 3 deletions packages/vx-scale/test/scaleTime.test.ts
@@ -1,7 +1,19 @@
import TimezoneMock from 'timezone-mock';
import { scaleTime } from '../src';

describe('scaleTime()', () => {
const domain = [new Date(2020, 0, 1), new Date(2020, 0, 10)];
let domain: [Date, Date];
let unniceDomain: [Date, Date];

beforeAll(() => {
TimezoneMock.register('US/Pacific');
domain = [new Date(2020, 0, 1), new Date(2020, 0, 10)];
unniceDomain = [new Date(2020, 0, 1), new Date(2020, 0, 9, 20)];
});

afterAll(() => {
TimezoneMock.unregister();
});

it('should be defined', () => {
expect(scaleTime).toBeDefined();
Expand Down Expand Up @@ -32,7 +44,6 @@ describe('scaleTime()', () => {
expect(scale(new Date(2020, 0, 5))).toEqual('rgb(136, 28, 11)');
});
describe('set nice', () => {
const unniceDomain = [new Date(2020, 0, 1), new Date(2020, 0, 9, 20)];
it('true', () => {
const scale = scaleTime({
domain: unniceDomain,
Expand All @@ -44,7 +55,11 @@ describe('scaleTime()', () => {
const scale = scaleTime({ domain: unniceDomain, nice: false });
expect(scale.domain()).toEqual(unniceDomain);
});
it('nice string', () => {
it('number', () => {
const scale = scaleTime({ domain: unniceDomain, nice: 5 });
expect(scale.domain()).toEqual([new Date(2020, 0, 1), new Date(2020, 0, 11)]);
});
it('time unit string', () => {
const scale = scaleTime({ domain: unniceDomain, nice: 'hour' });
expect(scale.domain()).toEqual(unniceDomain);
});
Expand Down
57 changes: 43 additions & 14 deletions packages/vx-scale/test/scaleUtc.test.ts
@@ -1,61 +1,90 @@
import { scaleTime } from '../src';
import TimezoneMock from 'timezone-mock';
import { scaleUtc } from '../src';

describe('scaleTime()', () => {
const domain = [new Date(Date.UTC(2020, 0, 1)), new Date(Date.UTC(2020, 0, 10))];
describe('scaleUtc()', () => {
let domain: [Date, Date];
let unniceDomain: [Date, Date];

beforeAll(() => {
TimezoneMock.register('US/Pacific');
domain = [new Date(Date.UTC(2020, 0, 1)), new Date(Date.UTC(2020, 0, 10))];
unniceDomain = [new Date(Date.UTC(2020, 0, 1)), new Date(Date.UTC(2020, 0, 9, 20))];
});

afterAll(() => {
TimezoneMock.unregister();
});

it('should be defined', () => {
expect(scaleTime).toBeDefined();
expect(scaleUtc).toBeDefined();
});
it('set domain', () => {
expect(scaleTime({ domain }).domain()).toEqual(domain);
expect(scaleUtc({ domain }).domain()).toEqual(domain);
});
it('set range', () => {
const range = [1, 2];
expect(scaleTime({ range: [1, 2] }).range()).toEqual(range);
expect(scaleUtc({ range: [1, 2] }).range()).toEqual(range);
});
describe('set clamp', () => {
it('true', () => {
const scale = scaleTime({ domain, range: [0, 10], clamp: true });
const scale = scaleUtc({ domain, range: [0, 10], clamp: true });
expect(scale(new Date(Date.UTC(2019, 11, 31)))).toEqual(0);
});
it('false', () => {
const scale = scaleTime({ domain, range: [0, 10], clamp: false });
const scale = scaleUtc({ domain, range: [0, 10], clamp: false });
expect(scale(new Date(Date.UTC(2019, 11, 31))).toFixed(2)).toEqual('-1.11');
});
});
it('set (color) interpolate', () => {
const scale = scaleTime({
const scale = scaleUtc({
domain,
range: ['#ff0000', '#000000'],
interpolate: 'lab',
});
expect(scale(new Date(Date.UTC(2020, 0, 5)))).toEqual('rgb(136, 28, 11)');
});
describe('set nice', () => {
const unniceDomain = [new Date(Date.UTC(2020, 0, 1)), new Date(Date.UTC(2020, 0, 9, 20))];
it('true', () => {
const scale = scaleTime({
const scale = scaleUtc({
domain: unniceDomain,
nice: true,
});
expect(scale.domain()).toEqual(domain);
});
it('false', () => {
const scale = scaleTime({ domain: unniceDomain, nice: false });
const scale = scaleUtc({ domain: unniceDomain, nice: false });
expect(scale.domain()).toEqual(unniceDomain);
});
it('number', () => {
const scale = scaleUtc({ domain: unniceDomain, nice: 5 });
expect(scale.domain()).toEqual([
new Date(Date.UTC(2020, 0, 1)),
new Date(Date.UTC(2020, 0, 11)),
]);
});
it('time unit string', () => {
const scale = scaleUtc({ domain: unniceDomain, nice: 'hour' });
expect(scale.domain()).toEqual(unniceDomain);
});
it('nice object', () => {
const scale = scaleUtc({ domain: unniceDomain, nice: { interval: 'hour', step: 3 } });
expect(scale.domain()).toEqual([
new Date(Date.UTC(2020, 0, 1)),
new Date(Date.UTC(2020, 0, 9, 21)),
]);
});
});
describe('set round', () => {
it('true', () => {
const scale = scaleTime({
const scale = scaleUtc({
domain,
range: [1, 5],
round: true,
});
expect(scale(new Date(Date.UTC(2020, 0, 5)))).toEqual(3);
});
it('false', () => {
const scale = scaleTime({
const scale = scaleUtc({
domain,
range: [1, 5],
round: false,
Expand Down

0 comments on commit 2c7152e

Please sign in to comment.