From c988e640c09bff7fe7fbba2a34b9701f67bd33c5 Mon Sep 17 00:00:00 2001 From: PvtWendy <102826495+PvtWendy@users.noreply.github.com> Date: Thu, 28 Mar 2024 02:35:32 -0400 Subject: [PATCH 1/3] =?UTF-8?q?Cria=C3=A7=C3=A3o=20de=20fun=C3=A7=C3=B5es?= =?UTF-8?q?=20da=20biblioteca=20calendario?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fontes/bibliotecas/calendario.ts | 119 +++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 fontes/bibliotecas/calendario.ts diff --git a/fontes/bibliotecas/calendario.ts b/fontes/bibliotecas/calendario.ts new file mode 100644 index 0000000..9f49a62 --- /dev/null +++ b/fontes/bibliotecas/calendario.ts @@ -0,0 +1,119 @@ +export async function dia_mes_atual(): Promise { + const data = new Date(); + return data.getDate(); +} + +export async function dia_semana_atual(): Promise { + const data = new Date(); + let diaDaSemana = data.getDay() + 1; + if (diaDaSemana === 7) diaDaSemana = 0; + return diaDaSemana; +} + +export async function mes_atual(): Promise { + const data = new Date(); + return data.getMonth() + 1; +} + +export async function ano_atual(): Promise { + const data = new Date(); + return data.getFullYear(); +} + +export async function hora_atual(formato_12h: boolean): Promise { + 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 { + const data = new Date(); + return data.getMinutes(); +} + +export async function segundo_atual(): Promise { + const data = new Date(); + return data.getSeconds(); +} + +export async function milisegundo_atual(): Promise { + const data = new Date(); + return data.getMilliseconds(); +} + +export async function dia_semana_completo( + numero_dia: number, + caixa_alta: boolean, + caixa_baixa: boolean +): Promise { + 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]; + + 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 { + const dias: string[] = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado']; + + if (numero_dia > 0 && numero_dia < 8) { + let dia: string = dias[numero_dia]; + + 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 { + const dias: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']; + + if (numero_dia > 0 && numero_dia < 8) { + let dia: string = dias[numero_dia]; + + 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.`); + } +} From eccb592dccf11fd33143bd027a6ae0d34194678f Mon Sep 17 00:00:00 2001 From: PvtWendy <102826495+PvtWendy@users.noreply.github.com> Date: Thu, 4 Apr 2024 23:55:47 -0400 Subject: [PATCH 2/3] Conserto no erro do indice do dia da semana --- fontes/bibliotecas/calendario.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fontes/bibliotecas/calendario.ts b/fontes/bibliotecas/calendario.ts index 9f49a62..88621e5 100644 --- a/fontes/bibliotecas/calendario.ts +++ b/fontes/bibliotecas/calendario.ts @@ -64,7 +64,7 @@ export async function dia_semana_completo( ]; if (numero_dia > 0 && numero_dia < 8) { - let dia: string = dias[numero_dia]; + let dia: string = dias[numero_dia - 1]; if (caixa_alta) { dia = dia.toUpperCase(); @@ -82,7 +82,7 @@ export async function dia_semana_curto(numero_dia: number, caixa_alta: boolean, const dias: string[] = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado']; if (numero_dia > 0 && numero_dia < 8) { - let dia: string = dias[numero_dia]; + let dia: string = dias[numero_dia - 1]; if (caixa_alta) { dia = dia.toUpperCase(); @@ -104,7 +104,7 @@ export async function dia_semana_abreviado( const dias: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']; if (numero_dia > 0 && numero_dia < 8) { - let dia: string = dias[numero_dia]; + let dia: string = dias[numero_dia - 1]; if (caixa_alta) { dia = dia.toUpperCase(); From ad313a6c73a74a74c5b3fa94a58fa6e17e1ec157 Mon Sep 17 00:00:00 2001 From: PvtWendy <102826495+PvtWendy@users.noreply.github.com> Date: Thu, 4 Apr 2024 23:56:03 -0400 Subject: [PATCH 3/3] =?UTF-8?q?Adi=C3=A7=C3=A3o=20de=20testes=20unitarios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fontes/bibliotecas/index.ts | 2 + testes/bibliotecas/calendario.test.ts | 197 ++++++++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 testes/bibliotecas/calendario.test.ts diff --git a/fontes/bibliotecas/index.ts b/fontes/bibliotecas/index.ts index e69de29..ffa1399 100644 --- a/fontes/bibliotecas/index.ts +++ b/fontes/bibliotecas/index.ts @@ -0,0 +1,2 @@ +export * from './matematica'; +export * from './calendario' \ No newline at end of file diff --git a/testes/bibliotecas/calendario.test.ts b/testes/bibliotecas/calendario.test.ts new file mode 100644 index 0000000..dd53129 --- /dev/null +++ b/testes/bibliotecas/calendario.test.ts @@ -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.` + ); + }); + }); +});