Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criação de funções da biblioteca calendario #8

Merged
merged 3 commits into from
Apr 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.`
);
});
});
});
Loading