1*1b3f573fSAndroid Build Coastguard Worker<?php 2*1b3f573fSAndroid Build Coastguard Worker 3*1b3f573fSAndroid Build Coastguard Workerrequire_once('test_base.php'); 4*1b3f573fSAndroid Build Coastguard Workerrequire_once('test_util.php'); 5*1b3f573fSAndroid Build Coastguard Worker 6*1b3f573fSAndroid Build Coastguard Workeruse Foo\TestMessage; 7*1b3f573fSAndroid Build Coastguard Workeruse Foo\TestImportDescriptorProto; 8*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Any; 9*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Api; 10*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\BoolValue; 11*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\BytesValue; 12*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\DoubleValue; 13*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Duration; 14*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Enum; 15*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\EnumValue; 16*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Field; 17*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\FieldMask; 18*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Field\Cardinality; 19*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Field\Kind; 20*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\FloatValue; 21*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\GPBEmpty; 22*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Int32Value; 23*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Int64Value; 24*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\ListValue; 25*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Method; 26*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Mixin; 27*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\NullValue; 28*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Option; 29*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\SourceContext; 30*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\StringValue; 31*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Struct; 32*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Syntax; 33*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Timestamp; 34*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Type; 35*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\UInt32Value; 36*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\UInt64Value; 37*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Value; 38*1b3f573fSAndroid Build Coastguard Worker 39*1b3f573fSAndroid Build Coastguard Workerclass NotMessage {} 40*1b3f573fSAndroid Build Coastguard Worker 41*1b3f573fSAndroid Build Coastguard Workerclass WellKnownTest extends TestBase { 42*1b3f573fSAndroid Build Coastguard Worker 43*1b3f573fSAndroid Build Coastguard Worker public function testEmpty() 44*1b3f573fSAndroid Build Coastguard Worker { 45*1b3f573fSAndroid Build Coastguard Worker $msg = new GPBEmpty(); 46*1b3f573fSAndroid Build Coastguard Worker $this->assertTrue($msg instanceof \Google\Protobuf\Internal\Message); 47*1b3f573fSAndroid Build Coastguard Worker } 48*1b3f573fSAndroid Build Coastguard Worker 49*1b3f573fSAndroid Build Coastguard Worker public function testImportDescriptorProto() 50*1b3f573fSAndroid Build Coastguard Worker { 51*1b3f573fSAndroid Build Coastguard Worker $msg = new TestImportDescriptorProto(); 52*1b3f573fSAndroid Build Coastguard Worker $this->assertTrue(true); 53*1b3f573fSAndroid Build Coastguard Worker } 54*1b3f573fSAndroid Build Coastguard Worker 55*1b3f573fSAndroid Build Coastguard Worker public function testAny() 56*1b3f573fSAndroid Build Coastguard Worker { 57*1b3f573fSAndroid Build Coastguard Worker // Create embed message 58*1b3f573fSAndroid Build Coastguard Worker $embed = new TestMessage(); 59*1b3f573fSAndroid Build Coastguard Worker $this->setFields($embed); 60*1b3f573fSAndroid Build Coastguard Worker $data = $embed->serializeToString(); 61*1b3f573fSAndroid Build Coastguard Worker 62*1b3f573fSAndroid Build Coastguard Worker // Set any via normal setter. 63*1b3f573fSAndroid Build Coastguard Worker $any = new Any(); 64*1b3f573fSAndroid Build Coastguard Worker 65*1b3f573fSAndroid Build Coastguard Worker $this->assertSame( 66*1b3f573fSAndroid Build Coastguard Worker $any, $any->setTypeUrl("type.googleapis.com/foo.TestMessage")); 67*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("type.googleapis.com/foo.TestMessage", 68*1b3f573fSAndroid Build Coastguard Worker $any->getTypeUrl()); 69*1b3f573fSAndroid Build Coastguard Worker 70*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($any, $any->setValue($data)); 71*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($data, $any->getValue()); 72*1b3f573fSAndroid Build Coastguard Worker 73*1b3f573fSAndroid Build Coastguard Worker // Test unpack. 74*1b3f573fSAndroid Build Coastguard Worker $msg = $any->unpack(); 75*1b3f573fSAndroid Build Coastguard Worker $this->assertTrue($msg instanceof TestMessage); 76*1b3f573fSAndroid Build Coastguard Worker $this->expectFields($msg); 77*1b3f573fSAndroid Build Coastguard Worker 78*1b3f573fSAndroid Build Coastguard Worker // Test pack. 79*1b3f573fSAndroid Build Coastguard Worker $any = new Any(); 80*1b3f573fSAndroid Build Coastguard Worker $any->pack($embed); 81*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($data, $any->getValue()); 82*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("type.googleapis.com/foo.TestMessage", $any->getTypeUrl()); 83*1b3f573fSAndroid Build Coastguard Worker 84*1b3f573fSAndroid Build Coastguard Worker // Test is. 85*1b3f573fSAndroid Build Coastguard Worker $this->assertTrue($any->is(TestMessage::class)); 86*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse($any->is(Any::class)); 87*1b3f573fSAndroid Build Coastguard Worker } 88*1b3f573fSAndroid Build Coastguard Worker 89*1b3f573fSAndroid Build Coastguard Worker public function testAnyUnpackInvalidTypeUrl() 90*1b3f573fSAndroid Build Coastguard Worker { 91*1b3f573fSAndroid Build Coastguard Worker $this->expectException(Exception::class); 92*1b3f573fSAndroid Build Coastguard Worker 93*1b3f573fSAndroid Build Coastguard Worker $any = new Any(); 94*1b3f573fSAndroid Build Coastguard Worker $any->setTypeUrl("invalid"); 95*1b3f573fSAndroid Build Coastguard Worker $any->unpack(); 96*1b3f573fSAndroid Build Coastguard Worker } 97*1b3f573fSAndroid Build Coastguard Worker 98*1b3f573fSAndroid Build Coastguard Worker public function testAnyUnpackMessageNotAdded() 99*1b3f573fSAndroid Build Coastguard Worker { 100*1b3f573fSAndroid Build Coastguard Worker $this->expectException(Exception::class); 101*1b3f573fSAndroid Build Coastguard Worker 102*1b3f573fSAndroid Build Coastguard Worker $any = new Any(); 103*1b3f573fSAndroid Build Coastguard Worker $any->setTypeUrl("type.googleapis.com/MessageNotAdded"); 104*1b3f573fSAndroid Build Coastguard Worker $any->unpack(); 105*1b3f573fSAndroid Build Coastguard Worker } 106*1b3f573fSAndroid Build Coastguard Worker 107*1b3f573fSAndroid Build Coastguard Worker public function testAnyUnpackDecodeError() 108*1b3f573fSAndroid Build Coastguard Worker { 109*1b3f573fSAndroid Build Coastguard Worker $this->expectException(Exception::class); 110*1b3f573fSAndroid Build Coastguard Worker 111*1b3f573fSAndroid Build Coastguard Worker $any = new Any(); 112*1b3f573fSAndroid Build Coastguard Worker $any->setTypeUrl("type.googleapis.com/foo.TestMessage"); 113*1b3f573fSAndroid Build Coastguard Worker $any->setValue("abc"); 114*1b3f573fSAndroid Build Coastguard Worker $any->unpack(); 115*1b3f573fSAndroid Build Coastguard Worker } 116*1b3f573fSAndroid Build Coastguard Worker 117*1b3f573fSAndroid Build Coastguard Worker public function testApi() 118*1b3f573fSAndroid Build Coastguard Worker { 119*1b3f573fSAndroid Build Coastguard Worker $m = new Api(); 120*1b3f573fSAndroid Build Coastguard Worker 121*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 122*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 123*1b3f573fSAndroid Build Coastguard Worker 124*1b3f573fSAndroid Build Coastguard Worker $m->setMethods([new Method()]); 125*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getMethods())); 126*1b3f573fSAndroid Build Coastguard Worker 127*1b3f573fSAndroid Build Coastguard Worker $m->setOptions([new Option()]); 128*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOptions())); 129*1b3f573fSAndroid Build Coastguard Worker 130*1b3f573fSAndroid Build Coastguard Worker $m->setVersion("a"); 131*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getVersion()); 132*1b3f573fSAndroid Build Coastguard Worker 133*1b3f573fSAndroid Build Coastguard Worker $m->setSourceContext(new SourceContext()); 134*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse(is_null($m->getSourceContext())); 135*1b3f573fSAndroid Build Coastguard Worker 136*1b3f573fSAndroid Build Coastguard Worker $m->setMixins([new Mixin()]); 137*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getMixins())); 138*1b3f573fSAndroid Build Coastguard Worker 139*1b3f573fSAndroid Build Coastguard Worker $m->setSyntax(Syntax::SYNTAX_PROTO2); 140*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(Syntax::SYNTAX_PROTO2, $m->getSyntax()); 141*1b3f573fSAndroid Build Coastguard Worker 142*1b3f573fSAndroid Build Coastguard Worker $m = new Method(); 143*1b3f573fSAndroid Build Coastguard Worker 144*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 145*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 146*1b3f573fSAndroid Build Coastguard Worker 147*1b3f573fSAndroid Build Coastguard Worker $m->setRequestTypeUrl("a"); 148*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getRequestTypeUrl()); 149*1b3f573fSAndroid Build Coastguard Worker 150*1b3f573fSAndroid Build Coastguard Worker $m->setRequestStreaming(true); 151*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(true, $m->getRequestStreaming()); 152*1b3f573fSAndroid Build Coastguard Worker 153*1b3f573fSAndroid Build Coastguard Worker $m->setResponseTypeUrl("a"); 154*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getResponseTypeUrl()); 155*1b3f573fSAndroid Build Coastguard Worker 156*1b3f573fSAndroid Build Coastguard Worker $m->setResponseStreaming(true); 157*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(true, $m->getResponseStreaming()); 158*1b3f573fSAndroid Build Coastguard Worker 159*1b3f573fSAndroid Build Coastguard Worker $m->setOptions([new Option()]); 160*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOptions())); 161*1b3f573fSAndroid Build Coastguard Worker 162*1b3f573fSAndroid Build Coastguard Worker $m = new Mixin(); 163*1b3f573fSAndroid Build Coastguard Worker 164*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 165*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 166*1b3f573fSAndroid Build Coastguard Worker 167*1b3f573fSAndroid Build Coastguard Worker $m->setRoot("a"); 168*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getRoot()); 169*1b3f573fSAndroid Build Coastguard Worker } 170*1b3f573fSAndroid Build Coastguard Worker 171*1b3f573fSAndroid Build Coastguard Worker public function testEnum() 172*1b3f573fSAndroid Build Coastguard Worker { 173*1b3f573fSAndroid Build Coastguard Worker $m = new Enum(); 174*1b3f573fSAndroid Build Coastguard Worker 175*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 176*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 177*1b3f573fSAndroid Build Coastguard Worker 178*1b3f573fSAndroid Build Coastguard Worker $m->setEnumvalue([new EnumValue()]); 179*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getEnumvalue())); 180*1b3f573fSAndroid Build Coastguard Worker 181*1b3f573fSAndroid Build Coastguard Worker $m->setOptions([new Option()]); 182*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOptions())); 183*1b3f573fSAndroid Build Coastguard Worker 184*1b3f573fSAndroid Build Coastguard Worker $m->setSourceContext(new SourceContext()); 185*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse(is_null($m->getSourceContext())); 186*1b3f573fSAndroid Build Coastguard Worker 187*1b3f573fSAndroid Build Coastguard Worker $m->setSyntax(Syntax::SYNTAX_PROTO2); 188*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(Syntax::SYNTAX_PROTO2, $m->getSyntax()); 189*1b3f573fSAndroid Build Coastguard Worker } 190*1b3f573fSAndroid Build Coastguard Worker 191*1b3f573fSAndroid Build Coastguard Worker public function testEnumValue() 192*1b3f573fSAndroid Build Coastguard Worker { 193*1b3f573fSAndroid Build Coastguard Worker $m = new EnumValue(); 194*1b3f573fSAndroid Build Coastguard Worker 195*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 196*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 197*1b3f573fSAndroid Build Coastguard Worker 198*1b3f573fSAndroid Build Coastguard Worker $m->setNumber(1); 199*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, $m->getNumber()); 200*1b3f573fSAndroid Build Coastguard Worker 201*1b3f573fSAndroid Build Coastguard Worker $m->setOptions([new Option()]); 202*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOptions())); 203*1b3f573fSAndroid Build Coastguard Worker } 204*1b3f573fSAndroid Build Coastguard Worker 205*1b3f573fSAndroid Build Coastguard Worker public function testField() 206*1b3f573fSAndroid Build Coastguard Worker { 207*1b3f573fSAndroid Build Coastguard Worker $m = new Field(); 208*1b3f573fSAndroid Build Coastguard Worker 209*1b3f573fSAndroid Build Coastguard Worker $m->setKind(Kind::TYPE_DOUBLE); 210*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(Kind::TYPE_DOUBLE, $m->getKind()); 211*1b3f573fSAndroid Build Coastguard Worker 212*1b3f573fSAndroid Build Coastguard Worker $m->setCardinality(Cardinality::CARDINALITY_OPTIONAL); 213*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(Cardinality::CARDINALITY_OPTIONAL, $m->getCardinality()); 214*1b3f573fSAndroid Build Coastguard Worker 215*1b3f573fSAndroid Build Coastguard Worker $m->setNumber(1); 216*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, $m->getNumber()); 217*1b3f573fSAndroid Build Coastguard Worker 218*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 219*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 220*1b3f573fSAndroid Build Coastguard Worker 221*1b3f573fSAndroid Build Coastguard Worker $m->setTypeUrl("a"); 222*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getTypeUrl()); 223*1b3f573fSAndroid Build Coastguard Worker 224*1b3f573fSAndroid Build Coastguard Worker $m->setOneofIndex(1); 225*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, $m->getOneofIndex()); 226*1b3f573fSAndroid Build Coastguard Worker 227*1b3f573fSAndroid Build Coastguard Worker $m->setPacked(true); 228*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(true, $m->getPacked()); 229*1b3f573fSAndroid Build Coastguard Worker 230*1b3f573fSAndroid Build Coastguard Worker $m->setOptions([new Option()]); 231*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOptions())); 232*1b3f573fSAndroid Build Coastguard Worker 233*1b3f573fSAndroid Build Coastguard Worker $m->setJsonName("a"); 234*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getJsonName()); 235*1b3f573fSAndroid Build Coastguard Worker 236*1b3f573fSAndroid Build Coastguard Worker $m->setDefaultValue("a"); 237*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getDefaultValue()); 238*1b3f573fSAndroid Build Coastguard Worker } 239*1b3f573fSAndroid Build Coastguard Worker 240*1b3f573fSAndroid Build Coastguard Worker public function testFieldMask() 241*1b3f573fSAndroid Build Coastguard Worker { 242*1b3f573fSAndroid Build Coastguard Worker $m = new FieldMask(); 243*1b3f573fSAndroid Build Coastguard Worker $m->setPaths(["a"]); 244*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getPaths())); 245*1b3f573fSAndroid Build Coastguard Worker } 246*1b3f573fSAndroid Build Coastguard Worker 247*1b3f573fSAndroid Build Coastguard Worker public function testOption() 248*1b3f573fSAndroid Build Coastguard Worker { 249*1b3f573fSAndroid Build Coastguard Worker $m = new Option(); 250*1b3f573fSAndroid Build Coastguard Worker 251*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 252*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 253*1b3f573fSAndroid Build Coastguard Worker 254*1b3f573fSAndroid Build Coastguard Worker $m->setValue(new Any()); 255*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse(is_null($m->getValue())); 256*1b3f573fSAndroid Build Coastguard Worker } 257*1b3f573fSAndroid Build Coastguard Worker 258*1b3f573fSAndroid Build Coastguard Worker public function testSourceContext() 259*1b3f573fSAndroid Build Coastguard Worker { 260*1b3f573fSAndroid Build Coastguard Worker $m = new SourceContext(); 261*1b3f573fSAndroid Build Coastguard Worker $m->setFileName("a"); 262*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getFileName()); 263*1b3f573fSAndroid Build Coastguard Worker } 264*1b3f573fSAndroid Build Coastguard Worker 265*1b3f573fSAndroid Build Coastguard Worker public function testStruct() 266*1b3f573fSAndroid Build Coastguard Worker { 267*1b3f573fSAndroid Build Coastguard Worker $m = new ListValue(); 268*1b3f573fSAndroid Build Coastguard Worker $m->setValues([new Value()]); 269*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getValues())); 270*1b3f573fSAndroid Build Coastguard Worker 271*1b3f573fSAndroid Build Coastguard Worker $m = new Value(); 272*1b3f573fSAndroid Build Coastguard Worker 273*1b3f573fSAndroid Build Coastguard Worker $this->assertNull($m->getStructValue()); 274*1b3f573fSAndroid Build Coastguard Worker 275*1b3f573fSAndroid Build Coastguard Worker $m->setNullValue(NullValue::NULL_VALUE); 276*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(NullValue::NULL_VALUE, $m->getNullValue()); 277*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("null_value", $m->getKind()); 278*1b3f573fSAndroid Build Coastguard Worker 279*1b3f573fSAndroid Build Coastguard Worker $m->setNumberValue(1.0); 280*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1.0, $m->getNumberValue()); 281*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("number_value", $m->getKind()); 282*1b3f573fSAndroid Build Coastguard Worker 283*1b3f573fSAndroid Build Coastguard Worker $m->setStringValue("a"); 284*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getStringValue()); 285*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("string_value", $m->getKind()); 286*1b3f573fSAndroid Build Coastguard Worker 287*1b3f573fSAndroid Build Coastguard Worker $m->setBoolValue(true); 288*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(true, $m->getBoolValue()); 289*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("bool_value", $m->getKind()); 290*1b3f573fSAndroid Build Coastguard Worker 291*1b3f573fSAndroid Build Coastguard Worker $m->setStructValue(new Struct()); 292*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse(is_null($m->getStructValue())); 293*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("struct_value", $m->getKind()); 294*1b3f573fSAndroid Build Coastguard Worker 295*1b3f573fSAndroid Build Coastguard Worker $m->setListValue(new ListValue()); 296*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse(is_null($m->getListValue())); 297*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("list_value", $m->getKind()); 298*1b3f573fSAndroid Build Coastguard Worker 299*1b3f573fSAndroid Build Coastguard Worker $m = new Struct(); 300*1b3f573fSAndroid Build Coastguard Worker $m->setFields(array("a"=>new Value())); 301*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getFields())); 302*1b3f573fSAndroid Build Coastguard Worker } 303*1b3f573fSAndroid Build Coastguard Worker 304*1b3f573fSAndroid Build Coastguard Worker public function testTimestamp() 305*1b3f573fSAndroid Build Coastguard Worker { 306*1b3f573fSAndroid Build Coastguard Worker $timestamp = new Timestamp(); 307*1b3f573fSAndroid Build Coastguard Worker 308*1b3f573fSAndroid Build Coastguard Worker $timestamp->setSeconds(1); 309*1b3f573fSAndroid Build Coastguard Worker $timestamp->setNanos(2); 310*1b3f573fSAndroid Build Coastguard Worker $this->assertEquals(1, $timestamp->getSeconds()); 311*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(2, $timestamp->getNanos()); 312*1b3f573fSAndroid Build Coastguard Worker 313*1b3f573fSAndroid Build Coastguard Worker date_default_timezone_set('UTC'); 314*1b3f573fSAndroid Build Coastguard Worker $from = new DateTime('2011-01-01T15:03:01.012345UTC'); 315*1b3f573fSAndroid Build Coastguard Worker $timestamp->fromDateTime($from); 316*1b3f573fSAndroid Build Coastguard Worker $this->assertEquals($from->format('U'), $timestamp->getSeconds()); 317*1b3f573fSAndroid Build Coastguard Worker $this->assertEquals(1000 * $from->format('u'), $timestamp->getNanos()); 318*1b3f573fSAndroid Build Coastguard Worker 319*1b3f573fSAndroid Build Coastguard Worker $to = $timestamp->toDateTime(); 320*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(\DateTime::class, get_class($to)); 321*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($from->format('U'), $to->format('U')); 322*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($from->format('u'), $to->format('u')); 323*1b3f573fSAndroid Build Coastguard Worker } 324*1b3f573fSAndroid Build Coastguard Worker 325*1b3f573fSAndroid Build Coastguard Worker public function testType() 326*1b3f573fSAndroid Build Coastguard Worker { 327*1b3f573fSAndroid Build Coastguard Worker $m = new Type(); 328*1b3f573fSAndroid Build Coastguard Worker 329*1b3f573fSAndroid Build Coastguard Worker $m->setName("a"); 330*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getName()); 331*1b3f573fSAndroid Build Coastguard Worker 332*1b3f573fSAndroid Build Coastguard Worker $m->setFields([new Field()]); 333*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getFields())); 334*1b3f573fSAndroid Build Coastguard Worker 335*1b3f573fSAndroid Build Coastguard Worker $m->setOneofs(["a"]); 336*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOneofs())); 337*1b3f573fSAndroid Build Coastguard Worker 338*1b3f573fSAndroid Build Coastguard Worker $m->setOptions([new Option()]); 339*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, count($m->getOptions())); 340*1b3f573fSAndroid Build Coastguard Worker 341*1b3f573fSAndroid Build Coastguard Worker $m->setSourceContext(new SourceContext()); 342*1b3f573fSAndroid Build Coastguard Worker $this->assertFalse(is_null($m->getSourceContext())); 343*1b3f573fSAndroid Build Coastguard Worker 344*1b3f573fSAndroid Build Coastguard Worker $m->setSyntax(Syntax::SYNTAX_PROTO2); 345*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(Syntax::SYNTAX_PROTO2, $m->getSyntax()); 346*1b3f573fSAndroid Build Coastguard Worker } 347*1b3f573fSAndroid Build Coastguard Worker 348*1b3f573fSAndroid Build Coastguard Worker public function testDuration() 349*1b3f573fSAndroid Build Coastguard Worker { 350*1b3f573fSAndroid Build Coastguard Worker $duration = new Duration(); 351*1b3f573fSAndroid Build Coastguard Worker 352*1b3f573fSAndroid Build Coastguard Worker $duration->setSeconds(1); 353*1b3f573fSAndroid Build Coastguard Worker $duration->setNanos(2); 354*1b3f573fSAndroid Build Coastguard Worker $this->assertEquals(1, $duration->getSeconds()); 355*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(2, $duration->getNanos()); 356*1b3f573fSAndroid Build Coastguard Worker } 357*1b3f573fSAndroid Build Coastguard Worker 358*1b3f573fSAndroid Build Coastguard Worker public function testWrappers() 359*1b3f573fSAndroid Build Coastguard Worker { 360*1b3f573fSAndroid Build Coastguard Worker $m = new DoubleValue(); 361*1b3f573fSAndroid Build Coastguard Worker $m->setValue(1.0); 362*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1.0, $m->getValue()); 363*1b3f573fSAndroid Build Coastguard Worker 364*1b3f573fSAndroid Build Coastguard Worker $m = new FloatValue(); 365*1b3f573fSAndroid Build Coastguard Worker $m->setValue(1.0); 366*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1.0, $m->getValue()); 367*1b3f573fSAndroid Build Coastguard Worker 368*1b3f573fSAndroid Build Coastguard Worker $m = new Int64Value(); 369*1b3f573fSAndroid Build Coastguard Worker $m->setValue(1); 370*1b3f573fSAndroid Build Coastguard Worker $this->assertEquals(1, $m->getValue()); 371*1b3f573fSAndroid Build Coastguard Worker 372*1b3f573fSAndroid Build Coastguard Worker $m = new UInt64Value(); 373*1b3f573fSAndroid Build Coastguard Worker $m->setValue(1); 374*1b3f573fSAndroid Build Coastguard Worker $this->assertEquals(1, $m->getValue()); 375*1b3f573fSAndroid Build Coastguard Worker 376*1b3f573fSAndroid Build Coastguard Worker $m = new Int32Value(); 377*1b3f573fSAndroid Build Coastguard Worker $m->setValue(1); 378*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, $m->getValue()); 379*1b3f573fSAndroid Build Coastguard Worker 380*1b3f573fSAndroid Build Coastguard Worker $m = new UInt32Value(); 381*1b3f573fSAndroid Build Coastguard Worker $m->setValue(1); 382*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(1, $m->getValue()); 383*1b3f573fSAndroid Build Coastguard Worker 384*1b3f573fSAndroid Build Coastguard Worker $m = new BoolValue(); 385*1b3f573fSAndroid Build Coastguard Worker $m->setValue(true); 386*1b3f573fSAndroid Build Coastguard Worker $this->assertSame(true, $m->getValue()); 387*1b3f573fSAndroid Build Coastguard Worker 388*1b3f573fSAndroid Build Coastguard Worker $m = new StringValue(); 389*1b3f573fSAndroid Build Coastguard Worker $m->setValue("a"); 390*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getValue()); 391*1b3f573fSAndroid Build Coastguard Worker 392*1b3f573fSAndroid Build Coastguard Worker $m = new BytesValue(); 393*1b3f573fSAndroid Build Coastguard Worker $m->setValue("a"); 394*1b3f573fSAndroid Build Coastguard Worker $this->assertSame("a", $m->getValue()); 395*1b3f573fSAndroid Build Coastguard Worker } 396*1b3f573fSAndroid Build Coastguard Worker 397*1b3f573fSAndroid Build Coastguard Worker /** 398*1b3f573fSAndroid Build Coastguard Worker * @dataProvider enumNameValueConversionDataProvider 399*1b3f573fSAndroid Build Coastguard Worker */ 400*1b3f573fSAndroid Build Coastguard Worker public function testEnumNameValueConversion($class) 401*1b3f573fSAndroid Build Coastguard Worker { 402*1b3f573fSAndroid Build Coastguard Worker $reflectionClass = new ReflectionClass($class); 403*1b3f573fSAndroid Build Coastguard Worker $constants = $reflectionClass->getConstants(); 404*1b3f573fSAndroid Build Coastguard Worker foreach ($constants as $k => $v) { 405*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($k, $class::name($v)); 406*1b3f573fSAndroid Build Coastguard Worker $this->assertSame($v, $class::value($k)); 407*1b3f573fSAndroid Build Coastguard Worker } 408*1b3f573fSAndroid Build Coastguard Worker } 409*1b3f573fSAndroid Build Coastguard Worker 410*1b3f573fSAndroid Build Coastguard Worker public function enumNameValueConversionDataProvider() 411*1b3f573fSAndroid Build Coastguard Worker { 412*1b3f573fSAndroid Build Coastguard Worker return [ 413*1b3f573fSAndroid Build Coastguard Worker ['\Google\Protobuf\Field\Cardinality'], 414*1b3f573fSAndroid Build Coastguard Worker ['\Google\Protobuf\Field\Kind'], 415*1b3f573fSAndroid Build Coastguard Worker ['\Google\Protobuf\NullValue'], 416*1b3f573fSAndroid Build Coastguard Worker ['\Google\Protobuf\Syntax'], 417*1b3f573fSAndroid Build Coastguard Worker ]; 418*1b3f573fSAndroid Build Coastguard Worker } 419*1b3f573fSAndroid Build Coastguard Worker} 420