Suppose, dear reader, that you teach a class in ColdFusion. You would have to give an exam to test your students’ absorption of the material. As Adobe does for its CF certification, you would probably give a written exam, asking esoteric questions about tags and attributes and data structures.
If you had even the smallest fragment of a soul, you would feel a little bad as you saw how hodge-podge the language has evolved over the years, leading to attributes like var, variable, and name which all do the same thing.
Me? I take it one step beyond. My students take a written exam, but they also take a practical exam. That practical exam? It looks a little like this:
Which is a prettier way to say:
Implement a component studentFinal.cfc,
which inherits from the (given) utility component Exam.cfc,
implements the (given) 13-function interface IFinal.cfc,
passes the (given) test suite finalExam-Spec.cfc,
and ties all together to produce a single PDF file via a function in the (given) base class.
Yep, you read that right: the test grades itself, thanks to cfSpec, so the student knows exactly how far they’ve gotten as they work through the exam. Of course, I have my own test suite with different input data to ensure that no one is coding to make the tests go green (not that any coder has ever done such a thing). The only way to get a perfect score is to produce the correct PDF at the very end, which relies on every function in the exam component working correctly.
Irony of ironies: the reference implementation (a.k.a. key) is 210 lines of code. The test suite is well over twice that.
Seriously though, how else would you implement a practical exam for ColdFusion, amirite?