| import { mergeMargin } from '@superset-ui/core/src'; |
| |
| describe('mergeMargin(margin1, margin2, mode?)', () => { |
| it('combines two given margin', () => { |
| expect( |
| mergeMargin( |
| { |
| top: 1, |
| left: 1, |
| bottom: 2, |
| right: 2, |
| }, |
| { |
| top: 2, |
| left: 2, |
| bottom: 1, |
| right: 1, |
| }, |
| ), |
| ).toEqual({ |
| top: 2, |
| left: 2, |
| bottom: 2, |
| right: 2, |
| }); |
| }); |
| describe('default values', () => { |
| it('works if margin1 is not defined', () => { |
| expect( |
| mergeMargin(undefined, { |
| top: 2, |
| left: 2, |
| bottom: 1, |
| right: 1, |
| }), |
| ).toEqual({ |
| top: 2, |
| left: 2, |
| bottom: 1, |
| right: 1, |
| }); |
| }); |
| it('works if margin2 is not defined', () => { |
| expect( |
| mergeMargin( |
| { |
| top: 1, |
| left: 1, |
| bottom: 2, |
| right: 2, |
| }, |
| undefined, |
| ), |
| ).toEqual({ |
| top: 1, |
| left: 1, |
| bottom: 2, |
| right: 2, |
| }); |
| }); |
| it('use 0 for the side that is not specified', () => { |
| expect(mergeMargin({}, {})).toEqual({ |
| top: 0, |
| left: 0, |
| bottom: 0, |
| right: 0, |
| }); |
| }); |
| }); |
| describe('mode', () => { |
| it('if mode=expand, returns the larger margin for each side', () => { |
| expect( |
| mergeMargin( |
| { |
| top: 1, |
| left: 1, |
| bottom: 2, |
| right: 2, |
| }, |
| { |
| top: 2, |
| left: 2, |
| bottom: 1, |
| right: 1, |
| }, |
| 'expand', |
| ), |
| ).toEqual({ |
| top: 2, |
| left: 2, |
| bottom: 2, |
| right: 2, |
| }); |
| }); |
| it('if mode=shrink, returns the smaller margin for each side', () => { |
| expect( |
| mergeMargin( |
| { |
| top: 1, |
| left: 1, |
| bottom: 2, |
| right: 2, |
| }, |
| { |
| top: 2, |
| left: 2, |
| bottom: 1, |
| right: 1, |
| }, |
| 'shrink', |
| ), |
| ).toEqual({ |
| top: 1, |
| left: 1, |
| bottom: 1, |
| right: 1, |
| }); |
| }); |
| it('expand by default', () => { |
| expect( |
| mergeMargin( |
| { |
| top: 1, |
| left: 1, |
| bottom: 2, |
| right: 2, |
| }, |
| { |
| top: 2, |
| left: 2, |
| bottom: 1, |
| right: 1, |
| }, |
| ), |
| ).toEqual({ |
| top: 2, |
| left: 2, |
| bottom: 2, |
| right: 2, |
| }); |
| }); |
| }); |
| it('works correctly for negative margins', () => { |
| expect( |
| mergeMargin( |
| { |
| top: -3, |
| left: -3, |
| bottom: -2, |
| right: -2, |
| }, |
| { |
| top: -2, |
| left: -2, |
| bottom: 0, |
| right: -1, |
| }, |
| ), |
| ).toEqual({ |
| top: -2, |
| left: -2, |
| bottom: 0, |
| right: -1, |
| }); |
| }); |
| it('if there are NaN or null, use another value', () => { |
| expect( |
| mergeMargin( |
| { |
| top: 10, |
| // @ts-ignore to let us pass `null` for testing |
| left: null, |
| bottom: 20, |
| right: NaN, |
| }, |
| { |
| top: NaN, |
| left: 30, |
| bottom: null, |
| right: 40, |
| }, |
| ), |
| ).toEqual({ |
| top: 10, |
| left: 30, |
| bottom: 20, |
| right: 40, |
| }); |
| }); |
| }); |