aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/tests/well_known_test.php
diff options
context:
space:
mode:
Diffstat (limited to 'php/tests/well_known_test.php')
-rw-r--r--php/tests/well_known_test.php74
1 files changed, 73 insertions, 1 deletions
diff --git a/php/tests/well_known_test.php b/php/tests/well_known_test.php
index 0c2aec13..bdf41bfb 100644
--- a/php/tests/well_known_test.php
+++ b/php/tests/well_known_test.php
@@ -1,8 +1,16 @@
<?php
+require_once('test_base.php');
+require_once('test_util.php');
+
use Google\Protobuf\GPBEmpty;
+use Google\Protobuf\Any;
+
+use Foo\TestMessage;
+
+class NotMessage {}
-class WellKnownTest extends PHPUnit_Framework_TestCase {
+class WellKnownTest extends TestBase {
public function testNone()
{
@@ -14,4 +22,68 @@ class WellKnownTest extends PHPUnit_Framework_TestCase {
$msg = new TestImportDescriptorProto();
}
+ public function testAny()
+ {
+ // Create embed message
+ $embed = new TestMessage();
+ $this->setFields($embed);
+ $data = $embed->serializeToString();
+
+ // Set any via normal setter.
+ $any = new Any();
+
+ $this->assertSame(
+ $any, $any->setTypeUrl("type.googleapis.com/foo.TestMessage"));
+ $this->assertSame("type.googleapis.com/foo.TestMessage",
+ $any->getTypeUrl());
+
+ $this->assertSame($any, $any->setValue($data));
+ $this->assertSame($data, $any->getValue());
+
+ // Test unpack.
+ $msg = $any->unpack();
+ $this->assertTrue($msg instanceof TestMessage);
+ $this->expectFields($msg);
+
+ // Test pack.
+ $any = new Any();
+ $any->pack($embed);
+ $this->assertSame($data, $any->getValue());
+ $this->assertSame("type.googleapis.com/foo.TestMessage", $any->getTypeUrl());
+
+ // Test is.
+ $this->assertTrue($any->is(TestMessage::class));
+ $this->assertFalse($any->is(Any::class));
+ }
+
+ /**
+ * @expectedException Exception
+ */
+ public function testAnyUnpackInvalidTypeUrl()
+ {
+ $any = new Any();
+ $any->setTypeUrl("invalid");
+ $any->unpack();
+ }
+
+ /**
+ * @expectedException Exception
+ */
+ public function testAnyUnpackMessageNotAdded()
+ {
+ $any = new Any();
+ $any->setTypeUrl("type.googleapis.com/MessageNotAdded");
+ $any->unpack();
+ }
+
+ /**
+ * @expectedException Exception
+ */
+ public function testAnyUnpackDecodeError()
+ {
+ $any = new Any();
+ $any->setTypeUrl("type.googleapis.com/foo.TestMessage");
+ $any->setValue("abc");
+ $any->unpack();
+ }
}