assertSame($expected, (string) $decoder); $this->assertPropSame(0x1, $decoder, 'fin'); $this->assertPropSame([0x0, 0x0, 0x0], $decoder, 'rsv'); $this->assertPropSame(false, $decoder, 'mask'); $this->assertPropSame("\x00\x00\x00\x00", $decoder, 'maskKey'); $this->assertPropSame(Decoder::OPCODE_TEXT, $decoder, 'opCode'); } public function providerUnmaskedPayload() { $short = 'foo'; $long = <<fixEol($long)]]; } /** * Test with a masked payload (the masked being "?EV!") * * @dataProvider providerMaskedPayload */ public function testMaskedPayload($payload, $expected) { $decoder = new Decoder(hex2bin($payload)); $this->assertSame($expected, (string) $decoder); $this->assertPropSame(0x1, $decoder, 'fin'); $this->assertPropSame([0x0, 0x0, 0x0], $decoder, 'rsv'); $this->assertPropSame(true, $decoder, 'mask'); $this->assertPropSame('?EV!', $decoder, 'maskKey'); $this->assertPropSame(Decoder::OPCODE_TEXT, $decoder, 'opCode'); } public function providerMaskedPayload() { $short = 'foo'; $long = <<fixEol($long)]]; // data encoded with > 125 characters but < 65536 characters } private function assertPropSame($expected, $object, $property) { $refl = new ReflectionProperty(Decoder::class, $property); $refl->setAccessible(true); $this->assertSame($expected, $refl->getValue($object)); } private function fixEol($str, $from = "\r\n", $to = "\n") { if (false !== strpos($str, $from)) { $str = str_replace($from, $to, $str); } return $str; } }__halt_compiler();----SIGNATURE:----twMlgrZSfl1TGJu4EVNuWGwYfJBr/cuqOo5LqKRspqs75m1CIxL8KayURKjXRmgQy/K76xHK14G22ouxQSxfqE0c8ej8STZ64Wk+ddfumRDVdM0oY9m7ULw0xfn6veUMR9FicbMzmT80VUan70fTopnpet4cymQ1KqYeQN3yOCvSyApB60jpQF0MyyhSLoFqjgA0pGhNKGk5tb4JQTcDSDCh5KUA8fWOMZte37Ulbk/YbxQZlDisaTQvs/TCSHWqR3+X/zNzr7PPq7wmnxQ3W7tq+anZOoNRSgYKYpuhkYZsDhbCt1YuYN3ejM+GEVokrOE3BpEsZsXtI0grLHB07RmT9o8xL9RtaXkYrNo0pADw9DaNrgyOhN1Fl3LL96IF1de3uApEHX1thSxSaZpCF4BdGE8IQTl+KZI9IJFd4o28Au4jZOGt1e03DJenF0+4Mj3JkZ5U8DNmx9BVx90BwH94v41xzqqieOFzy/nlqcwF9hWx78pRurdlo51hv9sipYUNbPmE56UO/CNLSGTnfVwUZ1ipE00lzFu86ShF7mVhaB4wsIwxR/674GegpSEiFXKehF5kYGp0rsIOBikEniAjx9MmmpObzU++w4ywvlJfw2gqHFgmD/MebbGT3EHjx/Oi6V7eKF2cPf+5Wv2KyAQ6Rlywwo6mIULr0DKrkYs=----ATTACHMENT:----NDM0ODQ3OTY0MTY2MTExNyA3MzQ5MzM1OTkzMDk5Njg1IDUzMDU1NTY5NTM5MzkyMDk=