1
resposta

Teste nao passa com a mesma implemetacao do exemplo

Prezados, Estou com uma duvida em relacao ao erro do teste.

Segue abaixo a strack do erro:

hospital-geradores-de-teste.logic-test

Tested 1 namespaces
Ran 5 assertions, in 1 test functions
4 errors

Results

hospital-geradores-de-teste.logic-test
4 non-passing tests:

Error in cabe-na-fila?-test
Que nao caiba na fila quando a fila esta cheia

expected: (not (cabe-na-fila? {:espera [1 7 22 43 21]} :espera))

   error: java.lang.ClassCastException: class clojure.lang.PersistentVector cannot be cast to class java.lang.Number (clojure.lang.PersistentVector is in unnamed module of loader 'app'; java.lang.Number is in module java.base of loader 'bootstrap')

Error in cabe-na-fila?-test
Que nao cabe na fila qdo tem mais do que uma fila cheia

expected: (not (cabe-na-fila? {:espera [1 7 22 34 51 27]} :espera))          

   error: java.lang.ClassCastException: class clojure.lang.PersistentVector cannot be cast to class java.lang.Number (clojure.lang.PersistentVector is in unnamed module of loader 'app'; java.lang.Number is in module java.base of loader 'bootstrap')

Error in cabe-na-fila?-test
Que cabe na fila quando tem gente mas nao esta cheia

expected: (cabe-na-fila? {:espera [1 2 3 4]} :espera)          

   error: java.lang.ClassCastException: class clojure.lang.PersistentVector cannot be cast to class java.lang.Number (clojure.lang.PersistentVector is in unnamed module of loader 'app'; java.lang.Number is in module java.base of loader 'bootstrap')

Error in cabe-na-fila?-test
Que cabe na fila quando tem gente mas nao esta cheia

expected: (cabe-na-fila? {:espera [1 4]} :espera)          

   error: java.lang.ClassCastException: class clojure.lang.PersistentVector cannot be cast to class java.lang.Number (clojure.lang.PersistentVector is in unnamed module of loader 'app'; java.lang.Number is in module java.base of loader 'bootstrap')

Implementacao do Cod Fonte

(ns hospital-geradores-de-teste.logic
  (:require [schema.core :as s]
            [hospital-geradores-de-teste.model :as h.model]))

(defn cabe-na-fila?
  [hospital departamento]
  (some->> hospital
          departamento
          (< 5)))

Implementacao do cenario de teste

(ns hospital-geradores-de-teste.logic-test
  (:use [clojure pprint])
  (:require [clojure.test :refer :all]
            [hospital-geradores-de-teste.logic :refer :all]
            [hospital-geradores-de-teste.model :as h.model]
            [schema.core :as s]))

(s/set-fn-validation! true)

(deftest cabe-na-fila?-test
  ;; (testing "Que caiba numa fila vazia"
  ;;   (is (cabe-na-fila? {:espera []}, :espera ))
  ;;   )

  (testing "Que nao caiba na fila quando a fila esta cheia"
    (is (not (cabe-na-fila? {:espera [1 7 22 43 21]}, :espera))))

  ;;one off da borda do limite para cima
  (testing "Que nao cabe na fila qdo tem mais do que uma fila cheia"
    (is (not (cabe-na-fila? {:espera [1 7 22 34 51 27]}, :espera))))

  ;; dentro das bordas
  (testing "Que cabe na fila quando tem gente mas nao esta cheia"
    (is (cabe-na-fila? {:espera [1 2 3 4]}, :espera))
    (is (cabe-na-fila? {:espera [1 4]}, :espera)))

  (testing "Que nao cabe quando o departamento nao existe"
    (is (not (cabe-na-fila? {:espera [1 2 3 4]}, :raio-x)))
    )
)
1 resposta

Oi, tudo bem? Peço desculpas pela demora em te retornar.

Uma possível solução para esse problema seria verificar se o valor que você está tentando comparar é realmente um número. Você pode utilizar a função number? para fazer essa verificação antes de realizar a comparação. Por exemplo:

(defn cabe-na-fila?
  [hospital departamento]
  (some->> hospital
          departamento
          (number?)
          (< 5)))

Dessa forma, você garante que a comparação só será feita se o valor for realmente um número.

Espero que essa sugestão possa te ajudar a resolver o problema. Se ainda tiver alguma dúvida, é só me perguntar!

Espero ter ajudado e bons estudos!