@@ -51,6 +51,37 @@ function test_datum_round_trip($schema_json, $datum, $binary)
5151 $ this ->assertEquals ($ datum , $ read_datum );
5252 }
5353
54+ /**
55+ * @dataProvider zigzag_unsigned_right_shift_provider
56+ */
57+ function test_zigzag_unsigned_right_shift (int $ expected , int $ n , int $ x ) {
58+ $ this ->assertEquals ($ expected , Zigzag::unsigned_right_shift ($ n , $ x ));
59+ }
60+
61+ public static function zigzag_unsigned_right_shift_provider (): array {
62+ return [
63+ [4611686018427387902 , -8 , 2 ],
64+ [2 , 8 , 2 ],
65+ [144115188075855871 , -2 , 7 ],
66+ [1125899906842623 , 144115188075855871 , 7 ],
67+ [8796093022207 , 1125899906842623 , 7 ],
68+ [68719476735 , 8796093022207 , 7 ],
69+ [536870911 , 68719476735 , 7 ],
70+ [4194303 , 536870911 , 7 ],
71+ [32767 , 4194303 , 7 ],
72+ [255 , 32767 , 7 ],
73+ [1 , 255 , 7 ],
74+ [144115188059078656 , -2147483648 , 7 ],
75+ [1125899906711552 , 144115188059078656 , 7 ],
76+ [8796093021184 , 1125899906711552 , 7 ],
77+ [68719476728 , 8796093021184 , 7 ],
78+ [536870911 , 68719476728 , 7 ],
79+ [4194303 , 536870911 , 7 ],
80+ [32767 , 4194303 , 7 ],
81+ [255 , 32767 , 7 ],
82+ ];
83+ }
84+
5485 /**
5586 * @return array
5687 */
@@ -67,11 +98,21 @@ function data_provider()
6798 array ('"int" ' , 1 , "\002" ),
6899 array ('"int" ' , 2147483647 , "\xFE\xFF\xFF\xFF\x0F" ),
69100
70- // array('"long"', (int) -9223372036854775808, "\001"),
101+ array ('"long" ' , (int ) -9223372036854775808 , "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01" ),
102+ array ('"long" ' , -(1 <<62 ), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F" ),
103+ array ('"long" ' , -4294967295 , "\xFD\xFF\xFF\xFF\x1F" ),
104+ array ('"long" ' , -10 , "\x13" ),
105+ array ('"long" ' , -3 , "\005" ),
106+ array ('"long" ' , -2 , "\003" ),
71107 array ('"long" ' , -1 , "\001" ),
72108 array ('"long" ' , 0 , "\000" ),
73109 array ('"long" ' , 1 , "\002" ),
74- // array('"long"', 9223372036854775807, "\002")
110+ array ('"long" ' , 2 , "\004" ),
111+ array ('"long" ' , 3 , "\006" ),
112+ array ('"long" ' , 10 , "\x14" ),
113+ array ('"long" ' , 4294967295 , "\xFE\xFF\xFF\xFF\x1F" ),
114+ array ('"long" ' , 1 <<62 , "\x80\x80\x80\x80\x80\x80\x80\x80\x80\x01" ),
115+ array ('"long" ' , 9223372036854775807 , "\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01" ),
75116
76117 array ('"float" ' , (float ) -10.0 , "\000\000 \301" ),
77118 array ('"float" ' , (float ) -1.0 , "\000\000\200\277" ),
0 commit comments