https://foro.gambas-es.org/viewtopic.php?f=1&t=4859&p=27960#p27960
-----------------------------------
Shell
Domingo, 13 Septiembre 2015, 00:03

Bateria De Test Para Una Función. Ejercicios
-----------------------------------
Hola!.

Os cuento la idea. Es una función muy simple, consiste en una función que tiene que devolver "verdadero" en
caso de que no sea un día laborable o estemos de vacaciones.  En caso contrarió devolverá "falso".

Este es el texto que he podido traducir del inglés.

[quote]
El parametro "dialaborable" es verdadero si se trata de un día entre semana y el parámetro "vacaciones" es verdadero si estamos de vacaciones.
Descansamos si no es un "díalaborable" o estamos de "vacaciones". 'Devolverá verdadero si descansamos.
[/quote]

Esta es su tabla de la verdad y la salida de la función: (Podía haber usado librando, de permiso, descanso...)

[quote]
'Descansando(False, False) -> True
'Descansando(True, False) -> False
'Descansando(False, True) -> True
'Descansando(True, True) -> True
[/quote]

Creo que el principal problema radica en el array "solucióncorrecta", en su orden.  Cuando compara ambos array, testusuario y solucioncorrecta.
Como tenemos dos parámetros booleanos, debemos crear una función que nos genere todos los posibles valores que pueden tomar las entradas. 
He creado una batería de test para comprobar la salida.

[code linenumbers=false syntax=gambas]
Private solucioncorrecta As Boolean[] = [True, False, True, True]
Private testusuario As New Boolean[]

Public Sub Main()
  
  CrearTest()
  ComprobarTest()
  
End

Private Function descanso(dialaborable As Boolean, vacaciones As Boolean) As Boolean
  
  If Not dialaborable Or vacaciones Then
    Return True
  Else
    Return False
  Endif
  
End

Private Sub CrearTest()

  Dim bboleanos As Boolean[] = [False, True]
  Dim x, y As Boolean
  
  For Each x In bboleanos
    For Each y In bboleanos
      'Con esta forma de poner los parametros,el resultado sale invertido
      'testusuario.Add(descanso(x, y))    
      'De esta forma no
      testusuario.Add(descanso(y, x))    
    Next
  Next
 'Stop
  
End

Public Sub ComprobarTest()
  
  Dim x As Integer
  
  For x = 0 To solucioncorrecta.Max
    If testusuario[x] = solucioncorrecta[x] Then 
      Print "OK!"
    Else
      Print "Error!"
    Endif
  Next
  
End
[/code]

Lo importante del ejercicio es comprobar el correcto funcionamiento de la función.
¿ Qué me podéis decir del orden de la solución en el array y el testeo de la misma ?.
Podría  comparar con el array solución de derecha a izquierda y al revés. Hacer dos veces lo mismo.

Os adjunto el código implementado para Gambas.

Siento no haber puesto descansando, tome la traducción muy literalmente.  :roll:

Como ultimo dato, es un ejercicio perteneciente a:

[url=http://codingbat.com]CodingBat

Saludos


