-
📘 Autor: Lucas Santos
-
🧩 Objetivo: Criar métodos de validação e manipulação (listas e strings) com testes automatizados utilizando xUnit
- 🧮 Projeto de Validação de Listas e Strings em C# (.NET 8)
O repositório contém dois projetos principais:
DesafioProjeto/ # Projeto console / biblioteca principal
├─ Program.cs
├─ ValidacaoLista.cs
├─ ValidacaoString.cs # nova classe de validações de string
└─ DesafioProjeto.csproj
DesafioProjetoTests/ # Projeto de testes
├─ ValidacaoListaTests.cs
├─ ValidacaoStringTests.cs # testes das validações de string
└─ DesafioProjetoTests.csproj| Tecnologia | Descrição |
|---|---|
| 🟦 C# (.NET 8) | Linguagem de programação principal |
| 🧩 xUnit | Framework de testes unitários |
| 🧠 LINQ | Manipulação de coleções (listas) |
| 🧰 .NET CLI | dotnet build, dotnet run, dotnet test |
| 🧪 Assert.Throws / Theory / MemberData | Estratégias de teste usadas |
Este projeto concentra utilitários simples e robustos para manipulação de listas numéricas e validação/manipulação de strings. A ênfase é em programação defensiva, leitura clara e testabilidade.
Localizada em ValidacaoLista.cs. Métodos principais já documentados:
-
List<int> MultiplicarNumerosLista(List<int> lista, int numero)Multiplica todos os elementos da lista pornumero.- Validações: lança
ArgumentNullExceptionselistafornull. - Retorna nova
List<int>(lista vazia → retorna lista vazia).
- Validações: lança
-
int RetornarMaiorNumeroLista(List<int> lista)Retorna o maior número da lista.- Validações: lança
ArgumentExceptionselistafornullou vazia.
- Validações: lança
Arquivo sugerido: ValidacaoString.cs. Objetivo: agrupar validações/normalizações de texto comuns para aplicações.
- Descrição: Retorna
truesetextofornull, vazio ("") ou apenas espaços. - Exceção: nenhuma — retorna booleano.
- Descrição: Normaliza espaços: remove espaços no início/fim e reduz múltiplos espaços entre palavras para um único espaço.
- Validação: Se
textofornulllançaArgumentNullException.
Exemplo: " Olá mundo " → "Olá mundo"
- Descrição: Coloca a primeira letra da string em maiúscula e mantém o restante (ou opcionalmente capitaliza cada palavra — documentar o comportamento).
- Validação: lança
ArgumentNullExceptionsetextofornull; retorna""ou lançaArgumentExceptionsetextofor vazio — escolha e documente.
Exemplo: "lucas" → "Lucas"
- Descrição: Verifica se
emailsegue um padrão simples (usando regex básica). Não substitui validação completa (não confundir com verificação de existência de domínio). - Validação: se
emailfornullretornafalseou lançaArgumentNullException— documente a escolha.
Exemplo: "teste@dominio.com" → true ; "nao-e-mail" → false
⚠️ Documente claramente exceções vs retornos booleanos. Para bibliotecas utilitárias, preferível retornar booleans para funções de validação e lançar exceções apenas quando o comportamento for de transformação (ex.:RemoverEspacosExtrasquando recebenull).
-
ValidacaoListaTests.cs— contém[Fact]e[Theory]para:MultiplicarNumerosLista(dados positivos, zeros, negativos, lista vazia, lista nula).RetornarMaiorNumeroLista(listas diversas + testes de exceção paranulle[]).
-
ValidacaoStringTests.cs— testes para cada método deValidacaoString:EstaNulaOuVazia:null,""," ","texto".RemoverEspacosExtras: string com múltiplos espaços, string já normalizada,null(exceção).CapitalizarPrimeiraLetra:"lucas" → "Lucas",""(decida comportamento),null(exceção).ValidarFormatoEmail: conjunto de strings válidas e inválidas.
null→true""→true" "→true"texto"→false
" Olá mundo "→"Olá mundo""texto"→"texto"null→ArgumentNullException
"lucas"→"Lucas""LUCAS"→"LUCAS"(documentar se transforma ou não)null→ArgumentNullException""→ArgumentExceptionou""(decidir e documentar)
"teste@dominio.com"→true"usuario+tag@sub.exemplo.co"→true"nao-e-mail"→falsenull→false(ouArgumentNullException— documente a escolha)
- Clone:
git clone https://github.com/seuusuario/DesafioProjeto.git
cd DesafioProjeto- Rodar o projeto (exemplo):
dotnet run --project DesafioProjeto- Rodar os testes:
dotnet test- Sugestão: abra o repositório no VS Code a partir do
.sln(se existir) pra o OmniSharp carregar corretamente:
code DesafioProjeto.slnDesafioProjeto/
├─ Program.cs
├─ ValidacaoLista.cs
├─ ValidacaoString.cs
├─ DesafioProjeto.csproj
└─ README.md
DesafioProjetoTests/
├─ ValidacaoListaTests.cs
├─ ValidacaoStringTests.cs
└─ DesafioProjetoTests.csprojCom a adição das validações de string, seu projeto cobre um conjunto maior e muito útil de utilitários que costumam ser usados em muitos sistemas (limpeza de entrada, validação de e-mail, normalização de nomes, etc.). Documente claramente no README as decisões sobre:
- lançar exceção vs retornar booleano,
- comportamento com strings vazias,
- regras de capitalização.


