video-ad-sdk
Version:
VAST/VPAID SDK that allows video ads to be played on top of any player
354 lines (337 loc) • 5.2 kB
text/typescript
import {sortMediaByBestFit} from '../sortMediaByBestFit'
let mediafiles: any[]
beforeEach(() => {
mediafiles = [
{
height: 360,
width: 640
},
{
height: 1080,
width: 1920
},
{
height: 480,
width: 854
},
{
height: 720,
width: 1280
},
{
height: 270,
width: 480
},
{
height: 640,
width: 360
},
{
height: 1920,
width: 1080
},
{
height: 854,
width: 480
},
{
height: 1280,
width: 720
},
{
height: 480,
width: 270
}
]
})
test('sortMediaByBestFit must sort the mediaFiles by best fit into the horizontally oriented screen', () => {
const sortedMediaFiles = sortMediaByBestFit(mediafiles, {
height: 480,
width: 854
} as DOMRect)
expect(sortedMediaFiles).not.toBe(mediafiles)
expect(sortedMediaFiles).toEqual([
{
height: 480,
width: 854
},
{
height: 360,
width: 640
},
{
height: 270,
width: 480
},
{
height: 720,
width: 1280
},
{
height: 1080,
width: 1920
},
{
height: 1280,
width: 720
},
{
height: 1920,
width: 1080
},
{
height: 854,
width: 480
},
{
height: 640,
width: 360
},
{
height: 480,
width: 270
}
])
})
test('sortMediaByBestFit must sort the mediaFiles by best fit into the vertically oriented screen', () => {
const sortedMediaFiles = sortMediaByBestFit(mediafiles, {
height: 854,
width: 480
} as DOMRect)
expect(sortedMediaFiles).not.toBe(mediafiles)
expect(sortedMediaFiles).toEqual([
{
height: 854,
width: 480
},
{
height: 640,
width: 360
},
{
height: 480,
width: 270
},
{
height: 1280,
width: 720
},
{
height: 1920,
width: 1080
},
{
height: 270,
width: 480
},
{
height: 360,
width: 640
},
{
height: 480,
width: 854
},
{
height: 720,
width: 1280
},
{
height: 1080,
width: 1920
}
])
})
test('sortMediaByBestFit must sort the mediaFiles by best fit, with vertical non identical values', () => {
mediafiles = [
{
height: 360,
width: 640
},
{
height: 1080,
width: 1920
},
{
height: 480,
width: 854
},
{
height: 720,
width: 1280
},
{
height: 270,
width: 480
},
{
height: 640,
width: 360
},
{
height: 1920,
width: 1080
},
{
height: 1280,
width: 720
},
{
height: 480,
width: 270
}
]
const sortedMediaFiles = sortMediaByBestFit(mediafiles, {
height: 854,
width: 480
} as DOMRect)
expect(sortedMediaFiles).not.toBe(mediafiles)
expect(sortedMediaFiles).toEqual([
{
height: 640,
width: 360
},
{
height: 480,
width: 270
},
{
height: 1280,
width: 720
},
{
height: 1920,
width: 1080
},
{
height: 270,
width: 480
},
{
height: 360,
width: 640
},
{
height: 480,
width: 854
},
{
height: 720,
width: 1280
},
{
height: 1080,
width: 1920
}
])
})
test('sortMediaByBestFit must sort the mediaFiles by best fit, with horizontally non identical values', () => {
mediafiles = [
{
height: 360,
width: 640
},
{
height: 1080,
width: 1920
},
{
height: 720,
width: 1280
},
{
height: 270,
width: 480
},
{
height: 640,
width: 360
},
{
height: 1920,
width: 1080
},
{
height: 1280,
width: 720
},
{
height: 480,
width: 270
}
]
const sortedMediaFiles = sortMediaByBestFit(mediafiles, {
height: 480,
width: 854
} as DOMRect)
expect(sortedMediaFiles).not.toBe(mediafiles)
expect(sortedMediaFiles).toEqual([
{
height: 360,
width: 640
},
{
height: 270,
width: 480
},
{
height: 720,
width: 1280
},
{
height: 1080,
width: 1920
},
{
height: 1280,
width: 720
},
{
height: 1920,
width: 1080
},
{
height: 640,
width: 360
},
{
height: 480,
width: 270
}
])
})
test('sortMediaByBestFit must sort the mediaFiles by best fit, with square video', () => {
mediafiles = [
{
height: 300,
width: 300
},
{
height: 200,
width: 200
},
{
height: 100,
width: 100
}
]
const sortedMediaFiles = sortMediaByBestFit(mediafiles, {
height: 220,
width: 220
} as DOMRect)
expect(sortedMediaFiles).not.toBe(mediafiles)
expect(sortedMediaFiles).toEqual([
{
height: 200,
width: 200
},
{
height: 300,
width: 300
},
{
height: 100,
width: 100
}
])
})