3 * PHP Unit tests for MWMessagePack
4 * @covers MWMessagePack
6 class MWMessagePackTest
extends MediaWikiTestCase
{
8 /* @var array Array of test cases, keyed by type. Each type is an array of
9 * (value, expected encoding as hex string). The expected values were
10 * generated using <https://github.com/onlinecity/msgpack-php>, which
11 * includes a serialization function.
23 array( -128, 'd080' ),
24 array( 1000, 'cd03e8' ),
25 array( -1000, 'd1fc18' ),
26 array( 100000, 'ce000186a0' ),
27 array( -100000, 'd2fffe7960' ),
28 array( 10000000000, 'cf00000002540be400' ),
29 array( -10000000000, 'd3fffffffdabf41c00' ),
30 array( -223372036854775807, 'd3fce66c50e2840001' ),
31 array( -9223372036854775807, 'd38000000000000001' ),
41 array( 0.1, 'cb3fb999999999999a' ),
42 array( 1.1, 'cb3ff199999999999a' ),
43 array( 123.456, 'cb405edd2f1a9fbe77' ),
47 array( 'foobar', 'a6666f6f626172' ),
49 'Lorem ipsum dolor sit amet amet.',
50 'da00204c6f72656d20697073756d20646f6c6f722073697420616d657420616d65742e'
54 array( array( 'abc', 'def', 'ghi' ), '93a3616263a3646566a3676869' ),
55 array( array( 'one' => 1, 'two' => 2 ), '82a36f6e6501a374776f02' ),
60 * Verify that values are serialized correctly.
61 * @covers MWMessagePack::pack
63 public function testMessagePack() {
64 foreach( $this->data
as $type => $cases ) {
65 foreach( $cases as $case ) {
66 list( $value, $expected ) = $case;
67 $actual = bin2hex( MWMessagePack
::pack( $value ) );
68 $this->assertEquals( $actual, $expected, $type );