January 2020
Intermediate to advanced
470 pages
11h 13m
English
Testing the memoization higher-order function poses an interesting problem – just how would you go about it? The first idea would be to look into the cache – but that's private and not visible. Of course, we could change memoize() so that it uses a global cache or somehow allows external access to the cache, but doing that sort of internal exam is frowned upon: you should try to do your tests based on external properties only.
Accepting that we shouldn't try to examine the cache, we could go for a time control: calling a function such as fib(), for a large value of n, should take longer if the function isn't memoized. This is certainly possible, but it's also prone to possible failures: something external to your tests ...