aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
diff options
context:
space:
mode:
authorJon Skeet <jonskeet@google.com>2015-06-23 16:09:27 +0100
committerJon Skeet <jonskeet@google.com>2015-06-24 17:56:22 +0100
commitbfee2dfe137b07e64ebd46baf71d932d58d01b1f (patch)
tree4bf6258a990369335cc82c8a8059eaaf1dc2dd06 /csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
parent94071b54d24d2f2f1cb5933a692b5397a047057c (diff)
downloadprotobuf-bfee2dfe137b07e64ebd46baf71d932d58d01b1f.tar.gz
protobuf-bfee2dfe137b07e64ebd46baf71d932d58d01b1f.tar.bz2
protobuf-bfee2dfe137b07e64ebd46baf71d932d58d01b1f.zip
Implement freezing for messages and repeated fields.
Fixes issue #523.
Diffstat (limited to 'csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs')
-rw-r--r--csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs20
1 files changed, 19 insertions, 1 deletions
diff --git a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
index e21d904d..26165428 100644
--- a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
@@ -1,4 +1,5 @@
-using Google.Protobuf.TestProtos;
+using System;
+using Google.Protobuf.TestProtos;
using NUnit.Framework;
namespace Google.Protobuf
@@ -257,5 +258,22 @@ namespace Google.Protobuf
original.OneofNestedMessage.Bb = 30;
Assert.AreNotEqual(original, clone);
}
+
+ [Test]
+ public void Freeze()
+ {
+ var frozen = new TestAllTypes();
+ frozen.Freeze();
+ Assert.IsTrue(frozen.IsFrozen);
+
+ Assert.Throws<InvalidOperationException>(() => frozen.ClearOneofField());
+ Assert.Throws<InvalidOperationException>(() => frozen.SingleInt32 = 0);
+ Assert.Throws<InvalidOperationException>(() => frozen.SingleNestedMessage = null);
+ Assert.Throws<InvalidOperationException>(() => frozen.SingleNestedEnum = 0);
+ Assert.Throws<InvalidOperationException>(() => frozen.OneofString = null);
+ Assert.Throws<InvalidOperationException>(() => frozen.OneofUint32 = 0U);
+ Assert.Throws<InvalidOperationException>(() => frozen.RepeatedDouble.Add(0.0));
+ Assert.Throws<InvalidOperationException>(() => frozen.RepeatedNestedMessage.Add(new TestAllTypes.Types.NestedMessage()));
+ }
}
}