public function testFnNotEqual() { $fn = FnGen::fnIsNotEqual(0); $this->assertFalse($fn(0)); $this->assertFalse($fn('0')); $this->assertFalse($fn(false)); $this->assertFalse($fn(null)); $this->assertFalse($fn('hello')); // <-- sad truth about PHP. $this->assertFalse($fn(0.0)); $this->assertTrue($fn(1)); $this->assertTrue($fn(true)); $this->assertTrue($fn('100')); $fn = FnGen::fnIsNotEqual('hello'); $this->assertFalse($fn('hello')); $this->assertFalse($fn(true)); // <-- also true. $this->assertFalse($fn(0)); // <-- sad truth about PHP. $this->assertFalse($fn(0.0)); // <-- again, sadly this is true $this->assertTrue($fn('Hello')); $this->assertTrue($fn('0')); $this->assertTrue($fn(null)); $this->assertTrue($fn(false)); $fn1 = FnGen::fnIsNotEqual(0); $fn2 = FnGen::fnIsEqual(1); $this->assertEquals($fn1, $fn2); // <-- closure function == closure function --- should not be relied on. }