Skip to content

Commit

Permalink
Merge pull request #8 from DesignLiquido/biblioteca-calendario
Browse files Browse the repository at this point in the history
  • Loading branch information
leonelsanchesdasilva authored Apr 5, 2024
2 parents 9eb7a36 + ad313a6 commit 168a820
Show file tree
Hide file tree
Showing 3 changed files with 318 additions and 0 deletions.
119 changes: 119 additions & 0 deletions fontes/bibliotecas/calendario.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
export async function dia_mes_atual(): Promise<number> {
const data = new Date();
return data.getDate();
}

export async function dia_semana_atual(): Promise<number> {
const data = new Date();
let diaDaSemana = data.getDay() + 1;
if (diaDaSemana === 7) diaDaSemana = 0;
return diaDaSemana;
}

export async function mes_atual(): Promise<number> {
const data = new Date();
return data.getMonth() + 1;
}

export async function ano_atual(): Promise<number> {
const data = new Date();
return data.getFullYear();
}

export async function hora_atual(formato_12h: boolean): Promise<number> {
const data = new Date();
if (!formato_12h) {
return data.getHours();
} else {
let hora = data.getHours() % 12;
if (hora === 0) {
hora = 12;
}
return hora;
}
}

export async function minuto_atual(): Promise<number> {
const data = new Date();
return data.getMinutes();
}

export async function segundo_atual(): Promise<number> {
const data = new Date();
return data.getSeconds();
}

export async function milisegundo_atual(): Promise<number> {
const data = new Date();
return data.getMilliseconds();
}

export async function dia_semana_completo(
numero_dia: number,
caixa_alta: boolean,
caixa_baixa: boolean
): Promise<string> {
const dias: string[] = [
'Domingo',
'Segunda-Feira',
'Terça-Feira',
'Quarta-Feira',
'Quinta-Feira',
'Sexta-Feira',
'Sábado',
];

if (numero_dia > 0 && numero_dia < 8) {
let dia: string = dias[numero_dia - 1];

if (caixa_alta) {
dia = dia.toUpperCase();
} else if (caixa_baixa) {
dia = dia.toLowerCase();
}

return dia;
} else {
throw new Error(`'${numero_dia}' não corresponde a um dia da semana válido.`);
}
}

export async function dia_semana_curto(numero_dia: number, caixa_alta: boolean, caixa_baixa: boolean): Promise<string> {
const dias: string[] = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];

if (numero_dia > 0 && numero_dia < 8) {
let dia: string = dias[numero_dia - 1];

if (caixa_alta) {
dia = dia.toUpperCase();
} else if (caixa_baixa) {
dia = dia.toLowerCase();
}

return dia;
} else {
throw new Error(`'${numero_dia}' não corresponde a um dia da semana válido.`);
}
}

export async function dia_semana_abreviado(
numero_dia: number,
caixa_alta: boolean,
caixa_baixa: boolean
): Promise<string> {
const dias: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];

if (numero_dia > 0 && numero_dia < 8) {
let dia: string = dias[numero_dia - 1];

if (caixa_alta) {
dia = dia.toUpperCase();
} else if (caixa_baixa) {
dia = dia.toLowerCase();
}

return dia;
} else {
throw new Error(`'${numero_dia}' não corresponde a um dia da semana válido.`);
}
}
2 changes: 2 additions & 0 deletions fontes/bibliotecas/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './matematica';
export * from './calendario'
197 changes: 197 additions & 0 deletions testes/bibliotecas/calendario.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
import {
dia_mes_atual,
dia_semana_abreviado,
dia_semana_atual,
dia_semana_completo,
dia_semana_curto,
mes_atual,
ano_atual,
hora_atual,
minuto_atual,
milisegundo_atual,
segundo_atual,
} from '../../fontes/bibliotecas/calendario';
describe('Biblioteca Calendario', () => {
describe('Dia do Mês Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
const diaEsperado = dataAtual.getDate();
const resultado = await dia_mes_atual();
expect(resultado).toBe(diaEsperado);
});
});
describe('Dia da Semana Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
let diaEsperado = dataAtual.getDay() + 1;
if (diaEsperado === 7) diaEsperado = 0;
const resultado = await dia_semana_atual();
expect(resultado).toBe(diaEsperado);
});
});

describe('Mês Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
const mesEsperado = dataAtual.getMonth() + 1;
const resultado = await mes_atual();
expect(resultado).toBe(mesEsperado);
});
});

describe('Ano Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
const anoEsperado = dataAtual.getFullYear();
const resultado = await ano_atual();
expect(resultado).toBe(anoEsperado);
});
});
describe('Hora Atual', () => {
it('Formato 24 horas', async () => {
const dataAtual = new Date();
const horaEsperada = dataAtual.getHours();
const resultado = await hora_atual(false);
expect(resultado).toBe(horaEsperada);
});

it('Formato 12 horas', async () => {
const dataAtual = new Date();
let horaEsperada = dataAtual.getHours() % 12;
if (horaEsperada === 0) {
horaEsperada = 12;
}
const resultado = await hora_atual(true);
expect(resultado).toBe(horaEsperada);
});
});
describe('Minuto Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
const minutoEsperado = dataAtual.getMinutes();
const resultado = await minuto_atual();
expect(resultado).toBe(minutoEsperado);
});
});

describe('Segundo Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
const segundoEsperado = dataAtual.getSeconds();
const resultado = await segundo_atual();
expect(resultado).toBe(segundoEsperado);
});
});

describe('Milissegundo Atual', () => {
it('Trivial', async () => {
const dataAtual = new Date();
const milissegundoEsperado = dataAtual.getMilliseconds();
const resultado = await milisegundo_atual();
expect(resultado).toBe(milissegundoEsperado);
});
});
describe('Dia da Semana Completo', () => {
it('Trivial', async () => {
const numeroDia = 1;
const caixaAlta = false;
const caixaBaixa = false;
const resultado = await dia_semana_completo(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('Domingo');
});

it('Caixa alta', async () => {
const numeroDia = 4;
const caixaAlta = true;
const caixaBaixa = false;
const resultado = await dia_semana_completo(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('QUARTA-FEIRA');
});

it('Caixa baixa', async () => {
const numeroDia = 6;
const caixaAlta = false;
const caixaBaixa = true;
const resultado = await dia_semana_completo(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('sexta-feira');
});

it('Falha - Dia invalido', async () => {
const numeroDia = 10;
const caixaAlta = false;
const caixaBaixa = false;
await expect(dia_semana_completo(numeroDia, caixaAlta, caixaBaixa)).rejects.toThrow(
`'${numeroDia}' não corresponde a um dia da semana válido.`
);
});
});

describe('Dia da Semana Curto', () => {
it('Trivial', async () => {
const numeroDia = 1;
const caixaAlta = false;
const caixaBaixa = false;
const resultado = await dia_semana_curto(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('Domingo');
});

it('Caixa alta', async () => {
const numeroDia = 4;
const caixaAlta = true;
const caixaBaixa = false;
const resultado = await dia_semana_curto(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('QUARTA');
});

it('Caixa baixa', async () => {
const numeroDia = 6;
const caixaAlta = false;
const caixaBaixa = true;
const resultado = await dia_semana_curto(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('sexta');
});

it('Falha - Dia invalido', async () => {
const numeroDia = 10;
const caixaAlta = false;
const caixaBaixa = false;
await expect(dia_semana_curto(numeroDia, caixaAlta, caixaBaixa)).rejects.toThrow(
`'${numeroDia}' não corresponde a um dia da semana válido.`
);
});
});
describe('Dia da Semana Abreviado', () => {
it('Trivial', async () => {
const numeroDia = 1;
const caixaAlta = false;
const caixaBaixa = false;
const resultado = await dia_semana_abreviado(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('Dom');
});

it('Caixa alta', async () => {
const numeroDia = 4;
const caixaAlta = true;
const caixaBaixa = false;
const resultado = await dia_semana_abreviado(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('QUA');
});

it('Caixa baixa', async () => {
const numeroDia = 6;
const caixaAlta = false;
const caixaBaixa = true;
const resultado = await dia_semana_abreviado(numeroDia, caixaAlta, caixaBaixa);
expect(resultado).toBe('sex');
});

it('Falha - Dia invalido', async () => {
const numeroDia = 10;
const caixaAlta = false;
const caixaBaixa = false;
await expect(dia_semana_abreviado(numeroDia, caixaAlta, caixaBaixa)).rejects.toThrow(
`'${numeroDia}' não corresponde a um dia da semana válido.`
);
});
});
});

0 comments on commit 168a820

Please sign in to comment.