|
3 | 3 |
|
4 | 4 | use \Couchbase\Cluster;
|
5 | 5 | use \Couchbase\ClusterOptions;
|
| 6 | +use \Couchbase\GetOptions; |
| 7 | +use \Couchbase\UpsertOptions; |
6 | 8 |
|
7 | 9 | class BucketTest extends CouchbaseTestCase {
|
8 | 10 |
|
@@ -77,6 +79,62 @@ function testBasicGet($c, $key) {
|
77 | 79 | return $key;
|
78 | 80 | }
|
79 | 81 |
|
| 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 | + |
80 | 138 | /**
|
81 | 139 | * Test basic remove
|
82 | 140 | *
|
|
0 commit comments