1 #region Copyright notice and license
2 
3 // Copyright 2015 gRPC authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 
17 #endregion
18 
19 using System;
20 using Grpc.Core;
21 using Grpc.Core.Internal;
22 using Grpc.Core.Utils;
23 using NUnit.Framework;
24 
25 namespace Grpc.Core.Internal.Tests
26 {
27     public class MetadataArraySafeHandleTest
28     {
29         [Test]
CreateEmptyAndDestroy()30         public void CreateEmptyAndDestroy()
31         {
32             var nativeMetadata = MetadataArraySafeHandle.Create(new Metadata());
33             nativeMetadata.Dispose();
34         }
35 
36         [Test]
CreateAndDestroy()37         public void CreateAndDestroy()
38         {
39             var metadata = new Metadata
40             {
41                 { "host", "somehost" },
42                 { "header2", "header value" },
43             };
44             var nativeMetadata = MetadataArraySafeHandle.Create(metadata);
45             nativeMetadata.Dispose();
46         }
47 
48         [Test]
ReadMetadataFromPtrUnsafe()49         public void ReadMetadataFromPtrUnsafe()
50         {
51             var metadata = new Metadata
52             {
53                 { "host", "somehost" },
54                 { "header2", "header value" }
55             };
56             var nativeMetadata = MetadataArraySafeHandle.Create(metadata);
57 
58             var copy = MetadataArraySafeHandle.ReadMetadataFromPtrUnsafe(nativeMetadata.Handle);
59             Assert.AreEqual(2, copy.Count);
60 
61             Assert.AreEqual("host", copy[0].Key);
62             Assert.AreEqual("somehost", copy[0].Value);
63             Assert.AreEqual("header2", copy[1].Key);
64             Assert.AreEqual("header value", copy[1].Value);
65 
66             nativeMetadata.Dispose();
67         }
68     }
69 }
70