|  | @@ -276,9 +276,6 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    it('testClearFields', function() {
 | 
	
		
			
				|  |  | -    // We don't set 'proper' defaults, rather, bools, strings,
 | 
	
		
			
				|  |  | -    // etc, are cleared to undefined or null and take on the Javascript
 | 
	
		
			
				|  |  | -    // meaning for that value. Repeated fields are set to [] when cleared.
 | 
	
		
			
				|  |  |      var data = ['str', true, [11], [[22], [33]], ['s1', 's2']];
 | 
	
		
			
				|  |  |      var foo = new proto.jspb.test.OptionalFields(data);
 | 
	
		
			
				|  |  |      foo.clearAString();
 | 
	
	
		
			
				|  | @@ -286,8 +283,8 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      foo.clearANestedMessage();
 | 
	
		
			
				|  |  |      foo.clearARepeatedMessageList();
 | 
	
		
			
				|  |  |      foo.clearARepeatedStringList();
 | 
	
		
			
				|  |  | -    assertUndefined(foo.getAString());
 | 
	
		
			
				|  |  | -    assertUndefined(foo.getABool());
 | 
	
		
			
				|  |  | +    assertEquals('', foo.getAString());
 | 
	
		
			
				|  |  | +    assertEquals(false, foo.getABool());
 | 
	
		
			
				|  |  |      assertUndefined(foo.getANestedMessage());
 | 
	
		
			
				|  |  |      assertFalse(foo.hasAString());
 | 
	
		
			
				|  |  |      assertFalse(foo.hasABool());
 | 
	
	
		
			
				|  | @@ -310,8 +307,8 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      foo.setANestedMessage(null);
 | 
	
		
			
				|  |  |      foo.setARepeatedMessageList(null);
 | 
	
		
			
				|  |  |      foo.setARepeatedStringList(null);
 | 
	
		
			
				|  |  | -    assertNull(foo.getAString());
 | 
	
		
			
				|  |  | -    assertNull(foo.getABool());
 | 
	
		
			
				|  |  | +    assertEquals('', foo.getAString());
 | 
	
		
			
				|  |  | +    assertEquals(false, foo.getABool());
 | 
	
		
			
				|  |  |      assertNull(foo.getANestedMessage());
 | 
	
		
			
				|  |  |      assertFalse(foo.hasAString());
 | 
	
		
			
				|  |  |      assertFalse(foo.hasABool());
 | 
	
	
		
			
				|  | @@ -328,8 +325,8 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      foo.setANestedMessage(undefined);
 | 
	
		
			
				|  |  |      foo.setARepeatedMessageList(undefined);
 | 
	
		
			
				|  |  |      foo.setARepeatedStringList(undefined);
 | 
	
		
			
				|  |  | -    assertUndefined(foo.getAString());
 | 
	
		
			
				|  |  | -    assertUndefined(foo.getABool());
 | 
	
		
			
				|  |  | +    assertEquals('', foo.getAString());
 | 
	
		
			
				|  |  | +    assertEquals(false, foo.getABool());
 | 
	
		
			
				|  |  |      assertUndefined(foo.getANestedMessage());
 | 
	
		
			
				|  |  |      assertFalse(foo.hasAString());
 | 
	
		
			
				|  |  |      assertFalse(foo.hasABool());
 | 
	
	
		
			
				|  | @@ -346,9 +343,9 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |                                                 {1000: 'unique'}]);
 | 
	
		
			
				|  |  |      var diff = /** @type {proto.jspb.test.HasExtensions} */
 | 
	
		
			
				|  |  |          (jspb.Message.difference(p1, p2));
 | 
	
		
			
				|  |  | -    assertUndefined(diff.getStr1());
 | 
	
		
			
				|  |  | +    assertEquals('', diff.getStr1());
 | 
	
		
			
				|  |  |      assertEquals('what', diff.getStr2());
 | 
	
		
			
				|  |  | -    assertUndefined(diff.getStr3());
 | 
	
		
			
				|  |  | +    assertEquals('', diff.getStr3());
 | 
	
		
			
				|  |  |      assertEquals('unique', diff.extensionObject_[1000]);
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -806,7 +803,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof([,, 'x']);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      assertEquals('x', message.getPone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPthree());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPthree());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE,
 | 
	
		
			
				|  |  |          message.getPartialOneofCase());
 | 
	
	
		
			
				|  | @@ -815,7 +812,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |    it('testKeepsLastWireValueSetInUnion_multipleValues', function() {
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof([,, 'x',, 'y']);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    assertUndefined('x', message.getPone());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPone());
 | 
	
		
			
				|  |  |      assertEquals('y', message.getPthree());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PTHREE,
 | 
	
	
		
			
				|  | @@ -824,19 +821,19 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    it('testSettingOneofFieldClearsOthers', function() {
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPthree());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPone());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPthree());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPthree());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.setPone('hi');
 | 
	
		
			
				|  |  |      assertEquals('hi', message.getPone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPthree());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPthree());
 | 
	
		
			
				|  |  |      assertTrue(message.hasPone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPthree());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.setPthree('bye');
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPone());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPone());
 | 
	
		
			
				|  |  |      assertEquals('bye', message.getPthree());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPone());
 | 
	
		
			
				|  |  |      assertTrue(message.hasPthree());
 | 
	
	
		
			
				|  | @@ -845,8 +842,8 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |    it('testSettingOneofFieldDoesNotClearFieldsFromOtherUnions', function() {
 | 
	
		
			
				|  |  |      var other = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPthree());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPone());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPthree());
 | 
	
		
			
				|  |  |      assertUndefined(message.getRone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPthree());
 | 
	
	
		
			
				|  | @@ -854,13 +851,13 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      message.setPone('hi');
 | 
	
		
			
				|  |  |      message.setRone(other);
 | 
	
		
			
				|  |  |      assertEquals('hi', message.getPone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPthree());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPthree());
 | 
	
		
			
				|  |  |      assertEquals(other, message.getRone());
 | 
	
		
			
				|  |  |      assertTrue(message.hasPone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPthree());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.setPthree('bye');
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPone());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPone());
 | 
	
		
			
				|  |  |      assertEquals('bye', message.getPthree());
 | 
	
		
			
				|  |  |      assertEquals(other, message.getRone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasPone());
 | 
	
	
		
			
				|  | @@ -889,7 +886,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |    it('testMessageWithDefaultOneofValues', function() {
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  |      assertEquals(1234, message.getAone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getAtwo());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getAtwo());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.DefaultOneofACase
 | 
	
		
			
				|  |  |              .DEFAULT_ONEOF_A_NOT_SET,
 | 
	
	
		
			
				|  | @@ -897,7 +894,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.setAone(567);
 | 
	
		
			
				|  |  |      assertEquals(567, message.getAone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getAtwo());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getAtwo());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.AONE,
 | 
	
		
			
				|  |  |          message.getDefaultOneofACase());
 | 
	
	
		
			
				|  | @@ -911,7 +908,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.clearAtwo();
 | 
	
		
			
				|  |  |      assertEquals(1234, message.getAone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getAtwo());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getAtwo());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.DefaultOneofACase
 | 
	
		
			
				|  |  |              .DEFAULT_ONEOF_A_NOT_SET,
 | 
	
	
		
			
				|  | @@ -920,7 +917,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    it('testMessageWithDefaultOneofValues_defaultNotOnFirstField', function() {
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  | -    assertUndefined(message.getBone());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getBone());
 | 
	
		
			
				|  |  |      assertEquals(1234, message.getBtwo());
 | 
	
		
			
				|  |  |      assertFalse(message.hasBone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasBtwo());
 | 
	
	
		
			
				|  | @@ -939,7 +936,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |          message.getDefaultOneofBCase());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.setBtwo(3);
 | 
	
		
			
				|  |  | -    assertUndefined(message.getBone());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getBone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasBone());
 | 
	
		
			
				|  |  |      assertTrue(message.hasBtwo());
 | 
	
		
			
				|  |  |      assertEquals(3, message.getBtwo());
 | 
	
	
		
			
				|  | @@ -948,7 +945,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |          message.getDefaultOneofBCase());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      message.clearBtwo();
 | 
	
		
			
				|  |  | -    assertUndefined(message.getBone());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getBone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasBone());
 | 
	
		
			
				|  |  |      assertFalse(message.hasBtwo());
 | 
	
		
			
				|  |  |      assertEquals(1234, message.getBtwo());
 | 
	
	
		
			
				|  | @@ -962,7 +959,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      var message =
 | 
	
		
			
				|  |  |          new proto.jspb.test.TestMessageWithOneof(new Array(9).concat(567));
 | 
	
		
			
				|  |  |      assertEquals(567, message.getAone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getAtwo());
 | 
	
		
			
				|  |  | +    assertEquals(0, message.getAtwo());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.DefaultOneofACase.AONE,
 | 
	
		
			
				|  |  |          message.getDefaultOneofACase());
 | 
	
	
		
			
				|  | @@ -998,7 +995,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          message =
 | 
	
		
			
				|  |  |              new proto.jspb.test.TestMessageWithOneof(new Array(12).concat(890));
 | 
	
		
			
				|  |  | -        assertUndefined(message.getBone());
 | 
	
		
			
				|  |  | +        assertEquals(0, message.getBone());
 | 
	
		
			
				|  |  |          assertEquals(890, message.getBtwo());
 | 
	
		
			
				|  |  |          assertEquals(
 | 
	
		
			
				|  |  |              proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO,
 | 
	
	
		
			
				|  | @@ -1006,7 +1003,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          message = new proto.jspb.test.TestMessageWithOneof(
 | 
	
		
			
				|  |  |              new Array(11).concat(567, 890));
 | 
	
		
			
				|  |  | -        assertUndefined(message.getBone());
 | 
	
		
			
				|  |  | +        assertEquals(0, message.getBone());
 | 
	
		
			
				|  |  |          assertEquals(890, message.getBtwo());
 | 
	
		
			
				|  |  |          assertEquals(
 | 
	
		
			
				|  |  |              proto.jspb.test.TestMessageWithOneof.DefaultOneofBCase.BTWO,
 | 
	
	
		
			
				|  | @@ -1023,7 +1020,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      var other = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  |      message.setRone(other);
 | 
	
		
			
				|  |  |      assertEquals(other, message.getRone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getRtwo());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getRtwo());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.RecursiveOneofCase.RONE,
 | 
	
		
			
				|  |  |          message.getRecursiveOneofCase());
 | 
	
	
		
			
				|  | @@ -1041,7 +1038,7 @@ describe('Message test suite', function() {
 | 
	
		
			
				|  |  |      var message = new proto.jspb.test.TestMessageWithOneof;
 | 
	
		
			
				|  |  |      message.setPone('x');
 | 
	
		
			
				|  |  |      assertEquals('x', message.getPone());
 | 
	
		
			
				|  |  | -    assertUndefined(message.getPthree());
 | 
	
		
			
				|  |  | +    assertEquals('', message.getPthree());
 | 
	
		
			
				|  |  |      assertEquals(
 | 
	
		
			
				|  |  |          proto.jspb.test.TestMessageWithOneof.PartialOneofCase.PONE,
 | 
	
		
			
				|  |  |          message.getPartialOneofCase());
 |