aboutsummaryrefslogblamecommitdiff
path: root/src/ProtocolBuffers.Test/CSharpOptionsTest.cs
blob: d22f99de3654168d62cabc524125bd2cac6bd80d (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                                 


                                         
                                  

                                   


                                                                   

                                                                                                                       

                                                                        
                                                                     





                                                                                                           
                                                                  





                                                                                         
                                                              




                                                                   

                                                                                                     

                                                                        
                                                                         





                                                                                                     
                                                                            





                                                                                                          
                                                                            





                                                                                               
                                                                            





                                                                                                   

                                                                            

   
using Google.ProtocolBuffers.DescriptorProtos;
using Google.ProtocolBuffers.Descriptors;
using NUnit.Framework;

namespace Google.ProtocolBuffers {
  [TestFixture]
  public class DescriptorUtilTest {
    [Test]
    public void ExplicitNamespace() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder {
        Name = "x", Package = "pack", Options = new FileOptions.Builder().SetExtension(CSharpOptions.CSharpFileOptions,
          new CSharpFileOptions.Builder { Namespace = "Foo.Bar" }.Build()).Build()
      }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("Foo.Bar", descriptor.CSharpOptions.Namespace);
    }

    [Test]
    public void NoNamespaceFallsBackToPackage() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "x", Package = "pack" }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("pack", descriptor.CSharpOptions.Namespace);
    }

    [Test]
    public void NoNamespaceOrPackageFallsBackToEmptyString() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "x" }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("", descriptor.CSharpOptions.Namespace);
    }

    [Test]
    public void ExplicitlyNamedFileClass() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder {
        Name = "x", Options = new FileOptions.Builder().SetExtension(CSharpOptions.CSharpFileOptions,
          new CSharpFileOptions.Builder { UmbrellaClassname = "Foo" }.Build()).Build()
      }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("Foo", descriptor.CSharpOptions.UmbrellaClassname);
    }

    [Test]
    public void ImplicitFileClassWithProtoSuffix() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "foo_bar.proto" }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
    }

    [Test]
    public void ImplicitFileClassWithProtoDevelSuffix() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "foo_bar.protodevel" }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
    }

    [Test]
    public void ImplicitFileClassWithNoSuffix() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "foo_bar" }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
    }

    [Test]
    public void ImplicitFileClassWithDirectoryStructure() {
      FileDescriptorProto proto = new FileDescriptorProto.Builder { Name = "x/y/foo_bar" }.Build();
      FileDescriptor descriptor = FileDescriptor.BuildFrom(proto, null);
      Assert.AreEqual("FooBar", descriptor.CSharpOptions.UmbrellaClassname);
    }
  }
}