forked from mongodb/mongo-php-driver-legacy
/
MongoBinDataTest.php
122 lines (104 loc) · 3.54 KB
/
MongoBinDataTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
/**
* Test class for MongoBinData
* Generated by PHPUnit on 2009-04-10 at 13:30:28.
*/
class MongoBinDataTest extends PHPUnit_Framework_TestCase
{
protected $object;
protected function setUp()
{
$m = new Mongo();
$this->object = $m->selectCollection("phpunit", "bindata");
$this->object->drop();
}
public function testBasic() {
$bin = new MongoBinData("abcdefg");
$this->assertEquals($bin->bin, 'abcdefg');
$this->assertEquals($bin->type, 2);
$this->object->insert( array("bin"=>$bin) );
$obj = $this->object->findOne();
$this->assertEquals($obj['bin']->bin, 'abcdefg');
$this->assertEquals($obj['bin']->type, 2);
}
public function testWeird() {
$x = chr(0);
$b = new MongoBinData("$x$x$x$x");
$this->assertEquals(ord($b->bin), 0);
$this->assertEquals(ord($b->bin[1]), 0);
$this->assertEquals(ord($b->bin[2]), 0);
$this->assertEquals(ord($b->bin[3]), 0);
$a = chr(255);
$b = chr(7);
$c = chr(199);
$b = new MongoBinData("$a$b$c");
$this->assertEquals(ord($b->bin[0]), 255);
$this->assertEquals(ord($b->bin[1]), 7);
$this->assertEquals(ord($b->bin[2]), 199);
}
public function testType2Mode() {
$x = chr(0).chr(1).chr(2).chr(3);
$b = new MongoBinData($x);
$this->object->save(array("bin" => $b));
$result = $this->object->findOne();
$this->assertEquals(0, ord($b->bin[0]));
$this->assertEquals(1, ord($b->bin[1]));
$this->assertEquals(2, ord($b->bin[2]));
$this->assertEquals(3, ord($b->bin[3]));
}
public function testTypes() {
$x = chr(0).chr(1).chr(2).chr(3);
$b = new MongoBinData($x, 1);
$this->object->save(array("bin" => $b));
$result = $this->object->findOne();
$this->assertEquals(0, ord($b->bin[0]));
$this->assertEquals(1, ord($b->bin[1]));
$this->assertEquals(2, ord($b->bin[2]));
$this->assertEquals(3, ord($b->bin[3]));
}
public function testConsts() {
$this->assertEquals(1, MongoBinData::FUNC);
$this->assertEquals(2, MongoBinData::BYTE_ARRAY);
$this->assertEquals(3, MongoBinData::UUID);
$this->assertEquals(5, MongoBinData::MD5);
$this->assertEquals(128, MongoBinData::CUSTOM);
$b = new MongoBinData("");
$this->assertEquals(MongoBinData::BYTE_ARRAY, $b->type);
}
/**
* @expectedException MongoException
*/
public function testNonUTFString()
{
$this->object->insert(array("str" =>"\xFE"));
}
public function testBinSerializeCheck() {
$b = new MongoBinData("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF");
$this->object->insert(array("bin" => $b));
$x = $this->object->findOne();
$this->assertEquals(2, $x['bin']->type);
}
public function testBigData() {
$this->object->drop();
$it = 0;
while($it < 45){
$datain = '';
$counter = 0;
while(strlen($datain) < 100000){
$datain = $datain.chr($counter);
$counter = $counter + 1;
if($counter == 255){
$counter = 0;
}
}
$str[$it] = $datain;
$it = $it + 1;
}
$dataout = '';
foreach($str as $blah){
$dataout = $dataout.$blah;
}
$this->object->insert(array("bindata" => new MongoBinData($dataout)));
$this->object->findOne();
}
}