Skip to content

Commit 6b7b8a1

Browse files
committed
Add Packer::packFloat32() and Packer::packFloat64()
1 parent 07c4845 commit 6b7b8a1

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ $packer->packNil(); // MP nil
9797
$packer->packBool(true); // MP bool
9898
$packer->packInt(42); // MP int
9999
$packer->packFloat(M_PI); // MP float
100+
$packer->packFloat32(M_PI); // MP float 32
101+
$packer->packFloat64(M_PI); // MP float 64
100102
$packer->packStr('foo'); // MP str
101103
$packer->packBin("\x80"); // MP bin
102104
$packer->packArray([1, 2]); // MP array

src/Packer.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ public function packFloat($float)
185185
: "\xcb".\pack('E', $float);
186186
}
187187

188+
public function packFloat32($float)
189+
{
190+
return "\xca".\pack('G', $float);
191+
}
192+
193+
public function packFloat64($float)
194+
{
195+
return "\xcb".\pack('E', $float);
196+
}
197+
188198
public function packStr($str)
189199
{
190200
$length = \strlen($str);

tests/DataProvider.php

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static function provideData() : array
2626
self::provideNilData(),
2727
self::provideBoolData(),
2828
self::provideIntData(),
29-
self::provideFloatData(),
29+
self::provideFloat64Data(),
3030
self::provideStrData(),
3131
self::provideBinData(),
3232
self::provideArrayData(),
@@ -129,7 +129,15 @@ public static function provideIntUnpackData() : array
129129
]);
130130
}
131131

132-
public static function provideFloatData() : array
132+
public static function provideFloat32Data() : array
133+
{
134+
return [
135+
'32-bit float #1' => [0.0, "\xca"."\x00\x00\x00\x00"],
136+
'32-bit float #2' => [2.5, "\xca"."\x40\x20\x00\x00"],
137+
];
138+
}
139+
140+
public static function provideFloat64Data() : array
133141
{
134142
return [
135143
'64-bit float #1' => [0.0, "\xcb"."\x00\x00\x00\x00"."\x00\x00\x00\x00"],
@@ -140,10 +148,10 @@ public static function provideFloatData() : array
140148

141149
public static function provideFloatUnpackData() : array
142150
{
143-
return array_merge(self::provideFloatData(), [
144-
'32-bit float #1' => [0.0, "\xca"."\x00\x00\x00\x00"],
145-
'32-bit float #2' => [2.5, "\xca"."\x40\x20\x00\x00"],
146-
]);
151+
return array_merge(
152+
self::provideFloat32Data(),
153+
self::provideFloat64Data()
154+
);
147155
}
148156

149157
public static function provideStrData() : array

tests/Unit/PackerTest.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,23 @@ public function testPackInt(int $raw, string $packed) : void
213213
}
214214

215215
/**
216-
* @dataProvider \MessagePack\Tests\DataProvider::provideFloatData
216+
* @dataProvider \MessagePack\Tests\DataProvider::provideFloat32Data
217+
*/
218+
public function testPackFloat32(float $raw, string $packed) : void
219+
{
220+
self::assertSame($packed, $this->packer->packFloat32($raw));
221+
}
222+
223+
/**
224+
* @dataProvider \MessagePack\Tests\DataProvider::provideFloat64Data
225+
*/
226+
public function testPackFloat64(float $raw, string $packed) : void
227+
{
228+
self::assertSame($packed, $this->packer->packFloat64($raw));
229+
}
230+
231+
/**
232+
* @dataProvider \MessagePack\Tests\DataProvider::provideFloat64Data
217233
*/
218234
public function testPackFloat(float $raw, string $packed) : void
219235
{

0 commit comments

Comments
 (0)