| ▲ | masklinn a day ago | |
What you're talking about is using an oracle (a different implementation of what you're testing), it's an option for property (or exhaustive) testing but is by no means a requirement. Even for a sort function there are plenty of properties you can check without needing an oracle e.g. - that the output sequence is the same length as the input - that the output sequence is sorted - that the population counts are the same in the input and the output > In real life, if you had that you probably wouldn't have written the function "my_sort" at all. Having a generalised sort doesn't mean you can't write a more specialised one which better fits your data set e.g. you might be in a situation where a radix sort is more appropriate. | ||
| ▲ | eru 10 hours ago | parent [-] | |
> Having a generalised sort doesn't mean you can't write a more specialised one which better fits your data set e.g. you might be in a situation where a radix sort is more appropriate. The opposite might also be true. Suppose you already have a specialised implementation, and you want to write a new generalised one. You can still test them against each other. Eg suppose you are writing a library that supports sorting crazy huge datasets that don't fit into memory. You can still check that it gives the same answers as the built-in sorting algorithm from the standard library on input that's small enough to fit into memory. | ||