| // Copyright 2008 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| goog.provide('goog.proto2.FieldDescriptorTest'); |
| goog.setTestOnly('goog.proto2.FieldDescriptorTest'); |
| |
| goog.require('goog.proto2.FieldDescriptor'); |
| goog.require('goog.proto2.Message'); |
| goog.require('goog.testing.jsunit'); |
| |
| function testFieldDescriptorConstruction() { |
| var messageType = {}; |
| var fieldDescriptor = new goog.proto2.FieldDescriptor(messageType, 10, { |
| name: 'test', |
| repeated: true, |
| packed: true, |
| fieldType: goog.proto2.FieldDescriptor.FieldType.INT32, |
| type: Number |
| }); |
| |
| assertEquals(10, fieldDescriptor.getTag()); |
| assertEquals('test', fieldDescriptor.getName()); |
| |
| assertEquals(true, fieldDescriptor.isRepeated()); |
| |
| assertEquals(true, fieldDescriptor.isPacked()); |
| |
| assertEquals(goog.proto2.FieldDescriptor.FieldType.INT32, |
| fieldDescriptor.getFieldType()); |
| assertEquals(Number, fieldDescriptor.getNativeType()); |
| assertEquals(0, fieldDescriptor.getDefaultValue()); |
| } |
| |
| function testGetDefaultValueOfString() { |
| var fieldDescriptor = new goog.proto2.FieldDescriptor({}, 10, { |
| name: 'test', |
| fieldType: goog.proto2.FieldDescriptor.FieldType.STRING, |
| type: String |
| }); |
| |
| assertEquals('', fieldDescriptor.getDefaultValue()); |
| } |
| |
| function testGetDefaultValueOfBool() { |
| var fieldDescriptor = new goog.proto2.FieldDescriptor({}, 10, { |
| name: 'test', |
| fieldType: goog.proto2.FieldDescriptor.FieldType.BOOL, |
| type: Boolean |
| }); |
| |
| assertEquals(false, fieldDescriptor.getDefaultValue()); |
| } |
| |
| function testGetDefaultValueOfInt64() { |
| var fieldDescriptor = new goog.proto2.FieldDescriptor({}, 10, { |
| name: 'test', |
| fieldType: goog.proto2.FieldDescriptor.FieldType.INT64, |
| type: String |
| }); |
| |
| assertEquals('0', fieldDescriptor.getDefaultValue()); |
| } |
| |
| function testRepeatedField() { |
| var messageType = {}; |
| var fieldDescriptor = new goog.proto2.FieldDescriptor(messageType, 10, { |
| name: 'test', |
| repeated: true, |
| fieldType: 7, |
| type: Number |
| }); |
| |
| assertEquals(true, fieldDescriptor.isRepeated()); |
| assertEquals(false, fieldDescriptor.isRequired()); |
| assertEquals(false, fieldDescriptor.isOptional()); |
| } |
| |
| function testRequiredField() { |
| var messageType = {}; |
| var fieldDescriptor = new goog.proto2.FieldDescriptor(messageType, 10, { |
| name: 'test', |
| required: true, |
| fieldType: 7, |
| type: Number |
| }); |
| |
| assertEquals(false, fieldDescriptor.isRepeated()); |
| assertEquals(true, fieldDescriptor.isRequired()); |
| assertEquals(false, fieldDescriptor.isOptional()); |
| } |
| |
| function testOptionalField() { |
| var messageType = {}; |
| var fieldDescriptor = new goog.proto2.FieldDescriptor(messageType, 10, { |
| name: 'test', |
| fieldType: 7, |
| type: Number |
| }); |
| |
| assertEquals(false, fieldDescriptor.isRepeated()); |
| assertEquals(false, fieldDescriptor.isRequired()); |
| assertEquals(true, fieldDescriptor.isOptional()); |
| } |
| |
| function testContaingType() { |
| var MessageType = function() { |
| MessageType.base(this, 'constructor'); |
| }; |
| goog.inherits(MessageType, goog.proto2.Message); |
| |
| MessageType.getDescriptor = function() { |
| if (!MessageType.descriptor_) { |
| // The descriptor is created lazily when we instantiate a new instance. |
| var descriptorObj = { |
| 0: { |
| name: 'test_message', |
| fullName: 'this.is.a.test_message' |
| }, |
| 10: { |
| name: 'test', |
| fieldType: 7, |
| type: Number |
| } |
| }; |
| MessageType.descriptor_ = goog.proto2.Message.createDescriptor( |
| MessageType, descriptorObj); |
| } |
| return MessageType.descriptor_; |
| }; |
| MessageType.prototype.getDescriptor = MessageType.getDescriptor; |
| |
| var descriptor = MessageType.getDescriptor(); |
| var fieldDescriptor = descriptor.getFields()[0]; |
| assertEquals('10', fieldDescriptor.getTag()); |
| assertEquals(descriptor, fieldDescriptor.getContainingType()); |
| } |