blob: d22f99de3654168d62cabc524125bd2cac6bd80d [file] [log] [blame]
Jon Skeet1d131c92008-11-13 22:29:48 +00001using Google.ProtocolBuffers.DescriptorProtos;
Jon Skeet68036862008-10-22 13:30:34 +01002using Google.ProtocolBuffers.Descriptors;
3using NUnit.Framework;
4
Jon Skeet1d131c92008-11-13 22:29:48 +00005namespace Google.ProtocolBuffers {
Jon Skeet68036862008-10-22 13:30:34 +01006 [TestFixture]
7 public class DescriptorUtilTest {
Jon Skeet68036862008-10-22 13:30:34 +01008 [Test]
9 public void ExplicitNamespace() {
10 FileDescriptorProto proto = new FileDescriptorProto.Builder {
Jon Skeet1d131c92008-11-13 22:29:48 +000011 Name = "x", Package = "pack", Options = new FileOptions.Builder().SetExtension(CSharpOptions.CSharpFileOptions,
12 new CSharpFileOptions.Builder { Namespace = "Foo.Bar" }.Build()).Build()
Jon Skeet68036862008-10-22 13:30:34 +010013 }.Build();
14 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000015 Assert.AreEqual("Foo.Bar", descriptor.CSharpOptions.Namespace);
Jon Skeet68036862008-10-22 13:30:34 +010016 }
17
18 [Test]
19 public void NoNamespaceFallsBackToPackage() {
20 FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "x", Package = "pack" }.Build();
21 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000022 Assert.AreEqual("pack", descriptor.CSharpOptions.Namespace);
Jon Skeet68036862008-10-22 13:30:34 +010023 }
24
25 [Test]
26 public void NoNamespaceOrPackageFallsBackToEmptyString() {
27 FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "x" }.Build();
28 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000029 Assert.AreEqual("", descriptor.CSharpOptions.Namespace);
Jon Skeet68036862008-10-22 13:30:34 +010030 }
31
32 [Test]
33 public void ExplicitlyNamedFileClass() {
34 FileDescriptorProto proto = new FileDescriptorProto.Builder {
Jon Skeet1d131c92008-11-13 22:29:48 +000035 Name = "x", Options = new FileOptions.Builder().SetExtension(CSharpOptions.CSharpFileOptions,
36 new CSharpFileOptions.Builder { UmbrellaClassname = "Foo" }.Build()).Build()
Jon Skeet68036862008-10-22 13:30:34 +010037 }.Build();
38 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000039 Assert.AreEqual("Foo", descriptor.CSharpOptions.UmbrellaClassname);
Jon Skeet68036862008-10-22 13:30:34 +010040 }
41
42 [Test]
43 public void ImplicitFileClassWithProtoSuffix() {
44 FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "foo_bar.proto" }.Build();
45 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000046 Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
Jon Skeet68036862008-10-22 13:30:34 +010047 }
48
49 [Test]
50 public void ImplicitFileClassWithProtoDevelSuffix() {
51 FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "foo_bar.protodevel" }.Build();
52 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000053 Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
Jon Skeet68036862008-10-22 13:30:34 +010054 }
55
56 [Test]
57 public void ImplicitFileClassWithNoSuffix() {
58 FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "foo_bar" }.Build();
59 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000060 Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
Jon Skeet68036862008-10-22 13:30:34 +010061 }
62
63 [Test]
64 public void ImplicitFileClassWithDirectoryStructure() {
65 FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "x/y/foo_bar" }.Build();
66 FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
Jon Skeet1d131c92008-11-13 22:29:48 +000067 Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
68 }
Jon Skeet68036862008-10-22 13:30:34 +010069 }
70}