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:----tN939837rp3125QkqXc7aYgGfjIa5MY6nuQcMWC3RB20UsFfudLLSraJTBG7pO/RluGjNtVZfK4/MlzUdsfWPxlIq4odE0ZINK4ZkTNHmcSUDvOsP+doVRSSDZ45swj+ebTcxYuYQkjfaKnlj4gcCrCI5kLeempkni6cJ5nOs0AJzJfgDyK/gjboqmthC9qLUmGXY4FM7LwxCN7ee6QtJ0GMfhDTQEuFv/WtNgUkv/9sM4Hx4fzU7pUk6fVYoY5xNvR1toaT78a9Rig1q6c5GfZzJ0QyseeQORWuS7vY9XxZQs/KDRQjsQud7Y0JZBEhWFmsdk+GAkzB+tZ1oW/T7Z8djlA1KuT/vma51Wp6NC04OuhBN0CkFCMcaNSSSqaeJpU6xf8HD4ttuM0pbtNk1I/HPmp1r1s/dCTt/5QaZCQL8W26NU7/lMqCVAXJdzvPCF6lYr21bXNiQkwtkZOOBy7lQJmQ5oKeWyS2JKWgYaMTWOwcxI11Jt0OB51zWw2eZ2aV6duM3NGR2h5iFGkhhyzH7qMeryjNVUgey5qIrjMaC44c+aDRBIWtalKeyspx/V540ff4gY5G0N9yVXVsiEZYQ5vZ8UROQGYPyf8wjjiBvkXcrlSi4pr+CIP0E3XvSesn3UyKOqYnndfVKkxECsVAdwBjYXdFs4iKzQOzdXE=----ATTACHMENT:----MjU4MTM4OTMxMzczNTk4NSAyMDE1MDUyODA5MTQzMDMxIDM4ODE4NjczNjM4MTY3OTI=