Immagini uguali ma diverse per i test

L
Lorespo (610 points)
0 13 17
asked Dec 30, 2018 in Es3 by Lorespo (610 points)
recategorized Dec 30, 2018 by andrea.sterbini
Quando vado a fare i test ottengo l'errore images differ, starting at coordinates 36,3 (colors: (0, 0, 0) != (255, 255, 255)) , ma quando vado a generare l'immagine per conto mio il pixel 36,3 è bianco. Inoltre confrontando l'immagine ottenuta dalla funzione es3 con i png dei risultati sono identici

Edit: mi correggo: quando salvo manualmente l'immagine è uguale alla risposta del test ma quelle generate da test3.py posizionano i figli fuori dall'imagine (ho messo dei blocchi try except per evitare che vada fuori range); succede su tutti i test tranne il primo
162 views

2 Answers

K
Khalester (3310 points)
1 5 24
answered Dec 30, 2018 by Khalester (3,310 points)
edited Dec 30, 2018 by Khalester

Anche a me capita un errore simile, se non identico: nel test 8, se runno il tester mi crea un immagine diversa da quella aspettata, mentre se la creo mettendo un nome a scelta, crea quella esatta.

'''a = immagini.load("es3_test8.png")

b = immagini.load("es3_risTest8.png")

p = es3("dirs","mio_risultato.png")

c = immagini.load("mio_risultato.png")

b == a
Out[295]: False

b == c
Out[296]: True'''

*insert "room guardian" here*

EDIT: che poi col vecchio zip fallivo il primo e l'ultimo test, con quello nuovo solo l'ultimo test ("dirs")

EDIT Pt2: pensavo fosse un errore dello zip così ho uploaddato, ma nulla, anche sulla WM lo stesso errore. HELP!

HO TROVATO LA SOLUZIONE!

Molto probabilmente usi delle variabili nella classe Nodo ma variabili generali della classe Nodo, ovvero delle variabili fuori dall'init. Praticamente quello che succede è che la classe Nodo e tutte le sue variabili, permangono anche nei test successivi, quindi per fixare, la classe Nodo si dovrebbe resettare a ogni test!

andrea.sterbini (172300 points)
510 927 1776
commented Dec 30, 2018 by andrea.sterbini (172,300 points)
Infatti hai usato degli attributi di classe che vengono condivisi tra tutte le istanze.
andrea.sterbini (172300 points)
510 927 1776
answered Dec 30, 2018 by andrea.sterbini (172,300 points)
Controlla se hai usato parametri di default inizializzati con un oggetto mutabile (dizionario/set/lista)
Viene condiviso tra tutte le chiamate generando errori difficilmente individuabili

(spiegherebbe perchè il primo test passa e i seguenti no)