I doubt anyone would recommend me time to implement an unstable sorting algorithm to check a test case, then override Merge Sort. How often do you come across a similar situation and what do you do?
Let me recommend it then. :)
All of these are trade-offs between the time you spend, on the one hand, and the risks that you reduce or decrease, and also understand what you get, on the other hand.
Continuing a hypothetical example ...
If "stability" is an important property / function, and you do not "test the test", if it does not work, you save the time it takes to complete this work, but do not risk that the test is incorrect and will always turn green.
If, on the other hand, you “test a test” by disrupting a function and observing how it fails, you reduce the risk of the test.
And a wildcard, you can gain some important knowledge. For example, when trying to code a “bad” sort and make the test fail, you might think more deeply about the comparison restrictions for the type you are sorting and find that you used “x == y” as a predicate of the equivalence class for sorting, but in fact, "! (x <y) & &! (y <x)" is the best predicate for your system (for example, you may find a design error or defect).
So, I say that the mistake is on the side of “spending extra time so that it fails, even if it means intentionally breaking the system, to get a red dot on the screen for a moment,” because although each of these little “sabotages” carries some time cost, each time while one of them will save you a huge package (for example, oops, an error in the test means that I have never tested the most important property of my system, or, unfortunately, our entire project for the inequality of the predicates are mixed up) . It is like playing a lottery, except in the long run the odds are in your favor; every week you spend $ 5 on tickets, and you usually lose, but every three months you win a jackpot of $ 1,000.