old_contents: from unittest.case import TestCase
  
  
  class Noh:
      def __init__(self):
          self.valor = None
          self.proximo_noh = None
  
  
  class ListaLigadaSimples:
      def __init__(self):
          self.inicio = None  # aponta para o Noh inicial
  
  
  def adicionar(lista, valor):
      noh = Noh()
      noh.valor = valor
      if lista.inicio is None:
          lista.inicio = noh
      else:
          ultimo_noh = lista.inicio
          while ultimo_noh.proximo_noh != None:
              ultimo_noh = ultimo_noh.proximo_noh
          ultimo_noh.proximo_noh = noh
  
  
  class TestesDeAdicaoEmListaSimples(TestCase):
      def testar_inicializar(self):
          lista = ListaLigadaSimples()
          self.assertIsNone(lista.inicio)
  
      def testar_adição_de_um_elemento(self):
          lista = ListaLigadaSimples()
          adicionar(lista, 'A')
          noh_inicial = lista.inicio
          self.assertIsNotNone(noh_inicial)
          self.assertEqual('A', noh_inicial.valor)
  
      def testar_adição_de_dois_elementos(self):
          lista = ListaLigadaSimples()
          adicionar(lista, 'A')
          noh_inicial = lista.inicio
          adicionar(lista, 'B')
          noh_final = noh_inicial.proximo_noh
          self.assertIsNotNone(noh_final)
          self.assertEqual('B', noh_final.valor)
          self.assertIsNone(noh_final.proximo_noh)
  
  
  class TestesDeTravessia(TestCase):
      def testar_travessia_de_lista_vazia(self):
          lista = ListaLigadaSimples()
          procedimento_executado = False
  
          def procedimento():
              nonlocal procedimento_executado
              procedimento_executado = True
  
          atravessar(lista, procedimento)
  
new_contents: from unittest.case import TestCase
  
  
  class Noh:
      def __init__(self):
          self.valor = None
          self.proximo_noh = None
  
  
  class ListaLigadaSimples:
      def __init__(self):
          self.inicio = None  # aponta para o Noh inicial
  
  
  def adicionar(lista, valor):
      noh = Noh()
      noh.valor = valor
      if lista.inicio is None:
          lista.inicio = noh
      else:
          ultimo_noh = lista.inicio
          while ultimo_noh.proximo_noh != None:
              ultimo_noh = ultimo_noh.proximo_noh
          ultimo_noh.proximo_noh = noh
  
  
  class TestesDeAdicaoEmListaSimples(TestCase):
      def testar_inicializar(self):
          lista = ListaLigadaSimples()
          self.assertIsNone(lista.inicio)
  
      def testar_adição_de_um_elemento(self):
          lista = ListaLigadaSimples()
          adicionar(lista, 'A')
          noh_inicial = lista.inicio
          self.assertIsNotNone(noh_inicial)
          self.assertEqual('A', noh_inicial.valor)
  
      def testar_adição_de_dois_elementos(self):
          lista = ListaLigadaSimples()
          adicionar(lista, 'A')
          noh_inicial = lista.inicio
          adicionar(lista, 'B')
          noh_final = noh_inicial.proximo_noh
          self.assertIsNotNone(noh_final)
          self.assertEqual('B', noh_final.valor)
          self.assertIsNone(noh_final.proximo_noh)
  
  
  class TestesDeTravessia(TestCase):
      def testar_travessia_de_lista_vazia(self):
          lista = ListaLigadaSimples()
          procedimento_executado = False
  
          def procedimento():
              nonlocal procedimento_executado
              procedimento_executado = True
  
          atravessar(lista, procedimento)
  
          self.assertFalse(procedimento_executado)
  
subject: Teste de travessia de lista vazia com asserção