diff --git a/package.xml b/package.xml
index 2091f2e2..27491332 100644
--- a/package.xml
+++ b/package.xml
@@ -94,6 +94,7 @@ Tests
+
diff --git a/tests/compression_conditions.phpt b/tests/compression_conditions.phpt
new file mode 100644
index 00000000..ca3c2d77
--- /dev/null
+++ b/tests/compression_conditions.phpt
@@ -0,0 +1,125 @@
+--TEST--
+Memcached compression test
+--SKIPIF--
+
+--FILE--
+setOption(Memcached::OPT_COMPRESSION, false);
+ } else {
+ $m->setOption(Memcached::OPT_COMPRESSION, true);
+ $m->setOption(Memcached::OPT_COMPRESSION_TYPE, get_compression($set_compression));
+ }
+
+ $m->set($key, $value, 1800);
+
+ $value_back = $m->get($key);
+ var_dump($value === $value_back);
+}
+
+fetch_with_compression($m, 'hello01', $data, 'zlib', 1.3, 4);
+fetch_with_compression($m, 'hello02', $data, 'fastlz', 1.3, 4);
+fetch_with_compression($m, 'hello03', $data, '', 1.3, 4);
+fetch_with_compression($m, 'hello04', $short_data, 'zlib', 1.3, 4);
+fetch_with_compression($m, 'hello05', $short_data, 'fastlz', 1.3, 4);
+fetch_with_compression($m, 'hello06', $short_data, '', 1.3, 4);
+fetch_with_compression($m, 'hello11', $data, 'zlib', 0.3, 4);
+fetch_with_compression($m, 'hello12', $data, 'fastlz', 0.3, 4);
+fetch_with_compression($m, 'hello13', $data, '', 0.3, 4);
+fetch_with_compression($m, 'hello14', $short_data, 'zlib', 0.3, 4);
+fetch_with_compression($m, 'hello15', $short_data, 'fastlz', 0.3, 4);
+fetch_with_compression($m, 'hello16', $short_data, '', 0.3, 4);
+fetch_with_compression($m, 'hello21', $data, 'zlib', 1.3, 2000);
+fetch_with_compression($m, 'hello22', $data, 'fastlz', 1.3, 2000);
+fetch_with_compression($m, 'hello23', $data, '', 1.3, 2000);
+fetch_with_compression($m, 'hello24', $short_data, 'zlib', 1.3, 2000);
+fetch_with_compression($m, 'hello25', $short_data, 'fastlz', 1.3, 2000);
+fetch_with_compression($m, 'hello26', $short_data, '', 1.3, 2000);
+fetch_with_compression($m, 'hello31', $data, 'zlib', 0.3, 2000);
+fetch_with_compression($m, 'hello32', $data, 'fastlz', 0.3, 2000);
+fetch_with_compression($m, 'hello33', $data, '', 0.3, 2000);
+fetch_with_compression($m, 'hello34', $short_data, 'zlib', 0.3, 2000);
+fetch_with_compression($m, 'hello35', $short_data, 'fastlz', 0.3, 2000);
+fetch_with_compression($m, 'hello36', $short_data, '', 0.3, 2000);
+?>
+--EXPECT--
+len=[4877] set=[zlib] factor=[1.3] threshold=[4]
+bool(true)
+len=[4877] set=[fastlz] factor=[1.3] threshold=[4]
+bool(true)
+len=[4877] set=[] factor=[1.3] threshold=[4]
+bool(true)
+len=[7] set=[zlib] factor=[1.3] threshold=[4]
+Memcached::set(): could not compress value
+bool(true)
+len=[7] set=[fastlz] factor=[1.3] threshold=[4]
+bool(true)
+len=[7] set=[] factor=[1.3] threshold=[4]
+bool(true)
+len=[4877] set=[zlib] factor=[0.3] threshold=[4]
+bool(true)
+len=[4877] set=[fastlz] factor=[0.3] threshold=[4]
+bool(true)
+len=[4877] set=[] factor=[0.3] threshold=[4]
+bool(true)
+len=[7] set=[zlib] factor=[0.3] threshold=[4]
+Memcached::set(): could not compress value
+bool(true)
+len=[7] set=[fastlz] factor=[0.3] threshold=[4]
+bool(true)
+len=[7] set=[] factor=[0.3] threshold=[4]
+bool(true)
+len=[4877] set=[zlib] factor=[1.3] threshold=[2000]
+bool(true)
+len=[4877] set=[fastlz] factor=[1.3] threshold=[2000]
+bool(true)
+len=[4877] set=[] factor=[1.3] threshold=[2000]
+bool(true)
+len=[7] set=[zlib] factor=[1.3] threshold=[2000]
+bool(true)
+len=[7] set=[fastlz] factor=[1.3] threshold=[2000]
+bool(true)
+len=[7] set=[] factor=[1.3] threshold=[2000]
+bool(true)
+len=[4877] set=[zlib] factor=[0.3] threshold=[2000]
+bool(true)
+len=[4877] set=[fastlz] factor=[0.3] threshold=[2000]
+bool(true)
+len=[4877] set=[] factor=[0.3] threshold=[2000]
+bool(true)
+len=[7] set=[zlib] factor=[0.3] threshold=[2000]
+bool(true)
+len=[7] set=[fastlz] factor=[0.3] threshold=[2000]
+bool(true)
+len=[7] set=[] factor=[0.3] threshold=[2000]
+bool(true)