flush(); $memoized(1); self::assertSame(2, $calls); } public function testFlushDoesNotAffectSubsequentCaching(): void { $calls = 0; $memoized = Memoize::wrap(function (int $n) use (&$calls): int { $calls++; return $n; }); $memoized(5); $memoized->flush(); $memoized(5); $memoized(5); self::assertSame(2, $calls); } public function testMultipleArgumentsFormUniqueKey(): void { $calls = 0; $memoized = Memoize::wrap(function (int $a, int $b) use (&$calls): int { $calls++; return $a + $b; }); self::assertSame(3, $memoized(1, 2)); self::assertSame(3, $memoized(1, 2)); self::assertSame(5, $memoized(2, 3)); self::assertSame(2, $calls); } }