Me ajudem a criar o Random

2 respostas
A

Tenho uma pilha que foi feita em C#, utilizando a metodologia TDD. Fiz um teste onde ela retorna o topo da pilha, mais eu queria que retornasse qq posição, aleatório.
Imagino que seria necessário usar Random né. Mais não sei usá-lo mt bem, então não consegui fazer. Se alguém puder me mostrar como é.

class Teste
[Test]
        public void add_palavras_na_lista_e_buscar_topo_da_pilha()
        {
           //adicionando palavras na lista
            String pushed = "casa";
            lista.Push(pushed);
            pushed = "parede";
            lista.Push(pushed);
            pushed = "computador";
            lista.Push(pushed);
            pushed = "blusa";
            lista.Push(pushed);
            Assert.IsFalse(lista.IsEmpty, "Após inclusão, IsEmpty, deve ser false");
            
            //buscando topo da pilha
           
            String topped = lista.Top() as String;
            Assert.AreEqual(pushed, topped);

        }
class da pilha
public void Push(Object palavra_)
        {
            this._palavras.Insert(0, palavra_);
        }

        public Object Top()
        {
           return this._palavras[0];
        }

Vlw!!

2 Respostas

ViniGodoy

Se permitir retirar de qualquer posição aleatoriamente, então não será uma pilha.

De qualquer forma, se sua pilha permite isso, o melhor para o TestCase é tirar numa ordem qualquer, que você defina, sem usar a classe Random. Assim vc sabe exatamente que números deveriam ter saído da pilha.

Procure testar também condições de exceção. Retirar o último item da pilha, tentar remover um item inválido, etc.

Random dificilmente é uma opção com test cases.

peczenyj

acho importante indicar o seguinte: uma pilha é uma pilha. É acesso sequencial do topo até o fim um elemento por vez.

se vc quer acessar um elemento aleatório vc esta corrompendo a pilha. nesse caso vc pode chamar de qq coisa menos de pilha. Chame de PseudoPilha.

acho mais interessante vc utilizar uma estrutura de dados de conjunto, onde não existe ordem aparente. Chame de Sacola, Conjunto, Set, etc.

Para criar o Random vc descobre uma das belezas do TDD. A sua classe PseudoPilha depende da implementacao do Random.

O que vc pode fazer é criar um construtor adicional e receber um objeto gerador de numeros randomicos e, por padrão, vc chama um gerador presente em alguma biblioteca que vc conhece. Outra forma é criar um getter e um setter para esta entidade, que vc pode confirmar se durante a criação de um objeto “normal” vc tem um gerador de numeros randomicos. E nos testes adicione um Mock desse objeto, se vc quer testar que realmente invoca um metodo nele, e faça-o retornar o que vc quer.

Veja como funciona a biblioteca jmock. Deve ajudar.

Criado 17 de fevereiro de 2011
Ultima resposta 17 de fev. de 2011
Respostas 2
Participantes 3