Skip to content

Commit 705de70

Browse files
committed
PCBC-746: add tests for transcoding empty value
Change-Id: Ic1155bded6597f7e2bec8baf0c366c0bab46735f Reviewed-on: http://review.couchbase.org/c/php-couchbase/+/144286 Tested-by: Build Bot <[email protected]> Reviewed-by: Sergey Avseyev <[email protected]>
1 parent b968f17 commit 705de70

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

tests/BucketTest.php

+58
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
use \Couchbase\Cluster;
55
use \Couchbase\ClusterOptions;
6+
use \Couchbase\GetOptions;
7+
use \Couchbase\UpsertOptions;
68

79
class BucketTest extends CouchbaseTestCase {
810

@@ -77,6 +79,62 @@ function testBasicGet($c, $key) {
7779
return $key;
7880
}
7981

82+
/**
83+
* Test reaction on empty value
84+
*
85+
* @depends testConnect
86+
*/
87+
function testReadingEmptyString($c) {
88+
$key = $this->makeKey('emptyString');
89+
90+
$passThruDecoder = function($bytes, $flags, $datatype) { return $bytes; };
91+
$passThruEncoder = function($value) { return [$value, 0x00, 0x00]; };
92+
93+
$res = $c->upsert($key, "");
94+
$this->assertNotNull($res->cas());
95+
$cas = $res->cas();
96+
97+
$res = $c->get($key);
98+
$this->assertEquals($cas, $res->cas());
99+
$this->assertEquals($res->content(), "");
100+
101+
$options = new GetOptions();
102+
$options->decoder($passThruDecoder);
103+
$res = $c->get($key, $options);
104+
$this->assertEquals($cas, $res->cas());
105+
$this->assertEquals($res->content(), "");
106+
107+
$options = new UpsertOptions();
108+
$options->encoder($passThruEncoder);
109+
$res = $c->upsert($key, "", $options);
110+
$this->assertNotNull($res->cas());
111+
$cas = $res->cas();
112+
113+
$res = $c->get($key);
114+
$this->assertEquals($cas, $res->cas());
115+
$this->assertEquals($res->content(), "");
116+
117+
$options = new GetOptions();
118+
$options->decoder($passThruDecoder);
119+
$res = $c->get($key, $options);
120+
$this->assertEquals($cas, $res->cas());
121+
$this->assertEquals($res->content(), "");
122+
123+
$res = $c->upsert($key, null);
124+
$this->assertNotNull($res->cas());
125+
$cas = $res->cas();
126+
127+
$res = $c->get($key);
128+
$this->assertEquals($cas, $res->cas());
129+
$this->assertEquals($res->content(), null);
130+
131+
$options = new GetOptions();
132+
$options->decoder($passThruDecoder);
133+
$res = $c->get($key, $options);
134+
$this->assertEquals($cas, $res->cas());
135+
$this->assertEquals($res->content(), "null");
136+
}
137+
80138
/**
81139
* Test basic remove
82140
*

0 commit comments

Comments
 (0)