diff --git a/fontes/bibliotecas/calendario.ts b/fontes/bibliotecas/calendario.ts new file mode 100644 index 0000000..88621e5 --- /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 - 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 { + 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 { + 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.`); + } +} 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.` + ); + }); + }); +});