mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-09-20 06:29:32 +02:00
randomize case tool, testCases and updated index file
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { tool as stringRandomizeCase } from './randomize-case/meta';
|
||||||
import { tool as stringUppercase } from './uppercase/meta';
|
import { tool as stringUppercase } from './uppercase/meta';
|
||||||
import { tool as stringExtractSubstring } from './extract-substring/meta';
|
import { tool as stringExtractSubstring } from './extract-substring/meta';
|
||||||
import { tool as stringCreatePalindrome } from './create-palindrome/meta';
|
import { tool as stringCreatePalindrome } from './create-palindrome/meta';
|
||||||
|
11
src/pages/string/randomize-case/index.tsx
Normal file
11
src/pages/string/randomize-case/index.tsx
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { Box } from '@mui/material';
|
||||||
|
import React from 'react';
|
||||||
|
import * as Yup from 'yup';
|
||||||
|
|
||||||
|
const initialValues = {};
|
||||||
|
const validationSchema = Yup.object({
|
||||||
|
// splitSeparator: Yup.string().required('The separator is required')
|
||||||
|
});
|
||||||
|
export default function RandomizeCase() {
|
||||||
|
return <Box>Lorem ipsum</Box>;
|
||||||
|
}
|
13
src/pages/string/randomize-case/meta.ts
Normal file
13
src/pages/string/randomize-case/meta.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { defineTool } from '@tools/defineTool';
|
||||||
|
import { lazy } from 'react';
|
||||||
|
// import image from '@assets/text.png';
|
||||||
|
|
||||||
|
export const tool = defineTool('string', {
|
||||||
|
name: 'Randomize case',
|
||||||
|
path: 'randomize-case',
|
||||||
|
// image,
|
||||||
|
description: '',
|
||||||
|
shortDescription: '',
|
||||||
|
keywords: ['randomize', 'case'],
|
||||||
|
component: lazy(() => import('./index'))
|
||||||
|
});
|
@@ -0,0 +1,48 @@
|
|||||||
|
import { expect, describe, it } from 'vitest';
|
||||||
|
import { randomizeCase } from './service';
|
||||||
|
|
||||||
|
describe('randomizeCase', () => {
|
||||||
|
it('should randomize the case of each character in the string', () => {
|
||||||
|
const input = 'hello world';
|
||||||
|
const result = randomizeCase(input);
|
||||||
|
|
||||||
|
// Ensure the output length is the same
|
||||||
|
expect(result).toHaveLength(input.length);
|
||||||
|
|
||||||
|
// Ensure each character in the input string appears in the result
|
||||||
|
for (let i = 0; i < input.length; i++) {
|
||||||
|
const inputChar = input[i];
|
||||||
|
const resultChar = result[i];
|
||||||
|
|
||||||
|
if (/[a-zA-Z]/.test(inputChar)) {
|
||||||
|
expect([inputChar.toLowerCase(), inputChar.toUpperCase()]).toContain(resultChar);
|
||||||
|
} else {
|
||||||
|
expect(inputChar).toBe(resultChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle an empty string', () => {
|
||||||
|
const input = '';
|
||||||
|
const result = randomizeCase(input);
|
||||||
|
expect(result).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should handle a string with numbers and symbols', () => {
|
||||||
|
const input = '123 hello! @world';
|
||||||
|
const result = randomizeCase(input);
|
||||||
|
|
||||||
|
// Ensure the output length is the same
|
||||||
|
expect(result).toHaveLength(input.length);
|
||||||
|
|
||||||
|
// Ensure numbers and symbols remain unchanged
|
||||||
|
for (let i = 0; i < input.length; i++) {
|
||||||
|
const inputChar = input[i];
|
||||||
|
const resultChar = result[i];
|
||||||
|
|
||||||
|
if (!/[a-zA-Z]/.test(inputChar)) {
|
||||||
|
expect(inputChar).toBe(resultChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
6
src/pages/string/randomize-case/service.ts
Normal file
6
src/pages/string/randomize-case/service.ts
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
export function randomizeCase(input: string): string {
|
||||||
|
return input
|
||||||
|
.split('')
|
||||||
|
.map(char => (Math.random() < 0.5 ? char.toLowerCase() : char.toUpperCase()))
|
||||||
|
.join('');
|
||||||
|
}
|
Reference in New Issue
Block a user