mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-14 11:55:19 -05:00
171 lines
6.3 KiB
TypeScript
171 lines
6.3 KiB
TypeScript
import { moveOneToEnd, moveOneToStart, moveToEnd, moveToStart } from 'common/util/arrayUtils';
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
describe('Array Manipulation Functions', () => {
|
|
const originalArray = ['a', 'b', 'c', 'd'];
|
|
|
|
describe('moveOneToEnd', () => {
|
|
describe('with callback', () => {
|
|
it('should move an item forward by one position', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToEnd(array, (item) => item === 'b');
|
|
expect(result).toEqual(['a', 'c', 'b', 'd']);
|
|
});
|
|
|
|
it('should do nothing if the item is at the end', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToEnd(array, (item) => item === 'd');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToEnd(array, (item) => item === 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
describe('with item', () => {
|
|
it('should move an item forward by one position', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToEnd(array, (item) => item === 'b');
|
|
expect(result).toEqual(['a', 'c', 'b', 'd']);
|
|
});
|
|
|
|
it('should do nothing if the item is at the end', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToEnd(array, (item) => item === 'd');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToEnd(array, (item) => item === 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('moveToStart', () => {
|
|
describe('with callback', () => {
|
|
it('should move an item to the front', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToStart(array, (item) => item === 'c');
|
|
expect(result).toEqual(['c', 'a', 'b', 'd']);
|
|
});
|
|
|
|
it('should do nothing if the item is already at the front', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToStart(array, (item) => item === 'a');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveToStart(array, (item) => item === 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
describe('with item', () => {
|
|
it('should move an item to the front', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToStart(array, 'c');
|
|
expect(result).toEqual(['c', 'a', 'b', 'd']);
|
|
});
|
|
|
|
it('should do nothing if the item is already at the front', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToStart(array, 'a');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveToStart(array, 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('moveOneToStart', () => {
|
|
describe('with callback', () => {
|
|
it('should move an item backward by one position', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToStart(array, (item) => item === 'c');
|
|
expect(result).toEqual(['a', 'c', 'b', 'd']);
|
|
});
|
|
|
|
it('should do nothing if the item is at the beginning', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToStart(array, (item) => item === 'a');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToStart(array, (item) => item === 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
describe('with item', () => {
|
|
it('should move an item backward by one position', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToStart(array, 'c');
|
|
expect(result).toEqual(['a', 'c', 'b', 'd']);
|
|
});
|
|
|
|
it('should do nothing if the item is at the beginning', () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToStart(array, 'a');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveOneToStart(array, 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('moveToEnd', () => {
|
|
describe('with callback', () => {
|
|
it('should move an item to the back', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToEnd(array, (item) => item === 'b');
|
|
expect(result).toEqual(['a', 'c', 'd', 'b']);
|
|
});
|
|
|
|
it('should do nothing if the item is already at the back', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToEnd(array, (item) => item === 'd');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveToEnd(array, (item) => item === 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
describe('with item', () => {
|
|
it('should move an item to the back', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToEnd(array, 'b');
|
|
expect(result).toEqual(['a', 'c', 'd', 'b']);
|
|
});
|
|
|
|
it('should do nothing if the item is already at the back', () => {
|
|
const array = [...originalArray];
|
|
const result = moveToEnd(array, 'd');
|
|
expect(result).toEqual(['a', 'b', 'c', 'd']);
|
|
});
|
|
|
|
it("should leave the array unchanged if the item isn't in the array", () => {
|
|
const array = [...originalArray];
|
|
const result = moveToEnd(array, 'z');
|
|
expect(result).toEqual(originalArray);
|
|
});
|
|
});
|
|
});
|
|
});
|