Ho un pacchetto di codice che suppone di dirmi dove allocare gli elementi. Quando aggiungo un nuovo elemento, potrebbe richiedere il riposizionamento di elementi esistenti per mantenere il mio 'albero' in un formato che promette una ricerca log-n. In definitiva, quando gli consegno un sistema attuale e nuovi elementi da aggiungere, dovrei ottenere un elenco di dove aggiungere nuovi elementi e quando / dove sono stati spostati i vecchi elementi.
Voglio verificare che il set restituito sia valido, ma non sono sicuro di come farlo. Posso facilmente verificare se gli elementi sono collocati in posizioni valide, cioè in luoghi che non rompono le ipotesi sul mio 'albero', ma ciò non garantisce che abbia fatto il minimo ed il più efficace movimento di elementi. Tuttavia, non riesco a pensare a come controllare che le mosse siano efficaci senza essenzialmente riscrivere gran parte del pacchetto solo per testare i risultati.
Da quando ho scritto il pacchetto conosco alcuni dettagli specifici sull'implementazione. So che A verrà spostato in B perché so esattamente quale logica è stata utilizzata per decidere la mossa, ma questa è l'implementazione specifica. Ci sono casi in cui ho molte scelte ugualmente valide e scelgo un modo quando posso sceglierne un altro. È 'giusto' fare questo tipo di test funzionali utilizzando la mia comprensione dell'algoritmo per specificare in modo specifico cosa dovrebbe essersi spostato dove? se no, in quale altro modo potrei scrivere il test per avere qualche idea che non sto facendo il più inefficiente, ma valido, possibile muovere?