mirror of
https://github.com/zadam/trilium.git
synced 2025-10-29 01:06:36 +01:00
remove submodules
This commit is contained in:
196
packages/splitjs/test/split.spec.js
Normal file
196
packages/splitjs/test/split.spec.js
Normal file
@@ -0,0 +1,196 @@
|
||||
/* eslint-env jasmine */
|
||||
/* global Split */
|
||||
/* eslint-disable no-var, func-names, prefer-arrow-callback, object-shorthand, prefer-template */
|
||||
|
||||
function calcParts(expr) {
|
||||
var re = /calc\(([\d]*\.?[\d]*?)%\s?-\s?([\d]+)px\)/
|
||||
var m = re.exec(expr)
|
||||
|
||||
return {
|
||||
percentage: parseFloat(m[1]),
|
||||
pixels: parseInt(m[2], 10),
|
||||
}
|
||||
}
|
||||
|
||||
describe('Split', function() {
|
||||
beforeEach(function() {
|
||||
document.body.style.width = '800px'
|
||||
document.body.style.height = '600px'
|
||||
|
||||
this.a = document.createElement('div')
|
||||
this.b = document.createElement('div')
|
||||
this.c = document.createElement('div')
|
||||
|
||||
this.a.id = 'a'
|
||||
this.b.id = 'b'
|
||||
this.c.id = 'c'
|
||||
|
||||
document.body.appendChild(this.a)
|
||||
document.body.appendChild(this.b)
|
||||
document.body.appendChild(this.c)
|
||||
})
|
||||
|
||||
afterEach(function() {
|
||||
document.body.removeChild(this.a)
|
||||
document.body.removeChild(this.b)
|
||||
document.body.removeChild(this.c)
|
||||
})
|
||||
|
||||
it('splits in two when given two elements', function() {
|
||||
Split(['#a', '#b'])
|
||||
|
||||
expect(this.a.style.width).toContain('calc(50% - 5px)')
|
||||
expect(this.b.style.width).toContain('calc(50% - 5px)')
|
||||
})
|
||||
|
||||
it('splits in three when given three elements', function() {
|
||||
Split(['#a', '#b', '#c'])
|
||||
|
||||
expect(calcParts(this.a.style.width).percentage).toBeCloseTo(33.33)
|
||||
expect(calcParts(this.b.style.width).percentage).toBeCloseTo(33.33)
|
||||
expect(calcParts(this.c.style.width).percentage).toBeCloseTo(33.33)
|
||||
|
||||
expect(calcParts(this.a.style.width).pixels).toBe(5)
|
||||
expect(calcParts(this.b.style.width).pixels).toBe(10)
|
||||
expect(calcParts(this.c.style.width).pixels).toBe(5)
|
||||
})
|
||||
|
||||
it('splits vertically when direction is vertical', function() {
|
||||
Split(['#a', '#b'], {
|
||||
direction: 'vertical',
|
||||
})
|
||||
|
||||
expect(this.a.style.height).toContain('calc(50% - 5px)')
|
||||
expect(this.b.style.height).toContain('calc(50% - 5px)')
|
||||
})
|
||||
|
||||
it('splits in percentages when given sizes', function() {
|
||||
Split(['#a', '#b'], {
|
||||
sizes: [25, 75],
|
||||
})
|
||||
|
||||
expect(this.a.style.width).toContain('calc(25% - 5px)')
|
||||
expect(this.b.style.width).toContain('calc(75% - 5px)')
|
||||
})
|
||||
|
||||
it('splits in percentages when given sizes', function() {
|
||||
Split(['#a', '#b'], {
|
||||
sizes: [25, 75],
|
||||
})
|
||||
|
||||
expect(this.a.style.width).toContain('calc(25% - 5px)')
|
||||
expect(this.b.style.width).toContain('calc(75% - 5px)')
|
||||
})
|
||||
|
||||
it('accounts for gutter size', function() {
|
||||
Split(['#a', '#b'], {
|
||||
gutterSize: 20,
|
||||
})
|
||||
|
||||
expect(this.a.style.width).toContain('calc(50% - 10px)')
|
||||
expect(this.b.style.width).toContain('calc(50% - 10px)')
|
||||
})
|
||||
|
||||
it('accounts for gutter size with more than two elements', function() {
|
||||
Split(['#a', '#b', '#c'], {
|
||||
gutterSize: 20,
|
||||
})
|
||||
|
||||
expect(calcParts(this.a.style.width).percentage).toBeCloseTo(33.33)
|
||||
expect(calcParts(this.b.style.width).percentage).toBeCloseTo(33.33)
|
||||
expect(calcParts(this.c.style.width).percentage).toBeCloseTo(33.33)
|
||||
|
||||
expect(calcParts(this.a.style.width).pixels).toBe(10)
|
||||
expect(calcParts(this.b.style.width).pixels).toBe(20)
|
||||
expect(calcParts(this.c.style.width).pixels).toBe(10)
|
||||
})
|
||||
|
||||
it('accounts for gutter size when direction is vertical', function() {
|
||||
Split(['#a', '#b'], {
|
||||
direction: 'vertical',
|
||||
gutterSize: 20,
|
||||
})
|
||||
|
||||
expect(this.a.style.height).toContain('calc(50% - 10px)')
|
||||
expect(this.b.style.height).toContain('calc(50% - 10px)')
|
||||
})
|
||||
|
||||
it('accounts for gutter size with more than two elements when direction is vertical', function() {
|
||||
Split(['#a', '#b', '#c'], {
|
||||
direction: 'vertical',
|
||||
gutterSize: 20,
|
||||
})
|
||||
|
||||
expect(calcParts(this.a.style.height).percentage).toBeCloseTo(33.33)
|
||||
expect(calcParts(this.b.style.height).percentage).toBeCloseTo(33.33)
|
||||
expect(calcParts(this.c.style.height).percentage).toBeCloseTo(33.33)
|
||||
|
||||
expect(calcParts(this.a.style.height).pixels).toBe(10)
|
||||
expect(calcParts(this.b.style.height).pixels).toBe(20)
|
||||
expect(calcParts(this.c.style.height).pixels).toBe(10)
|
||||
})
|
||||
|
||||
it('set size directly when given css values', function() {
|
||||
Split(['#a', '#b'], {
|
||||
sizes: ['150px', '640px'],
|
||||
})
|
||||
|
||||
expect(this.a.style.width).toBe('150px')
|
||||
expect(this.b.style.width).toBe('640px')
|
||||
})
|
||||
|
||||
it('adjusts sizes using setSizes', function() {
|
||||
var split = Split(['#a', '#b'])
|
||||
|
||||
split.setSizes([70, 30])
|
||||
|
||||
expect(this.a.style.width).toContain('calc(70% - 5px)')
|
||||
expect(this.b.style.width).toContain('calc(30% - 5px)')
|
||||
})
|
||||
|
||||
it('collapse splits', function() {
|
||||
var split = Split(['#a', '#b'])
|
||||
|
||||
split.collapse(0)
|
||||
|
||||
expect(this.a.getBoundingClientRect().width).toBeCloseTo(100, 0)
|
||||
expect(this.b.getBoundingClientRect().width).toBeCloseTo(
|
||||
800 - 100 - 10,
|
||||
0,
|
||||
)
|
||||
|
||||
split.collapse(1)
|
||||
|
||||
expect(this.a.getBoundingClientRect().width).toBeCloseTo(
|
||||
800 - 100 - 10,
|
||||
0,
|
||||
)
|
||||
expect(this.b.getBoundingClientRect().width).toBeCloseTo(100, 0)
|
||||
})
|
||||
|
||||
it('returns sizes', function() {
|
||||
var split = Split(['#a', '#b'])
|
||||
var sizes = split.getSizes()
|
||||
|
||||
expect(sizes).toEqual([50, 50])
|
||||
|
||||
split.setSizes([70, 30])
|
||||
|
||||
sizes = split.getSizes()
|
||||
|
||||
expect(sizes).toEqual([70, 30])
|
||||
})
|
||||
|
||||
it('sets element styles using the elementStyle function', function() {
|
||||
Split(['#a', '#b'], {
|
||||
elementStyle: function(dimension, size) {
|
||||
return {
|
||||
width: size + '%',
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
expect(this.a.style.width).toBe('50%')
|
||||
expect(this.b.style.width).toBe('50%')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user