xref: /aosp_15_r20/external/grpc-grpc/src/csharp/Grpc.Tools.Tests/ProtoToolsPlatformTaskTest.cs (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker #region Copyright notice and license
2*cc02d7e2SAndroid Build Coastguard Worker 
3*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2018 gRPC authors.
4*cc02d7e2SAndroid Build Coastguard Worker //
5*cc02d7e2SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
6*cc02d7e2SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
7*cc02d7e2SAndroid Build Coastguard Worker // You may obtain a copy of the License at
8*cc02d7e2SAndroid Build Coastguard Worker //
9*cc02d7e2SAndroid Build Coastguard Worker //     http://www.apache.org/licenses/LICENSE-2.0
10*cc02d7e2SAndroid Build Coastguard Worker //
11*cc02d7e2SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
12*cc02d7e2SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
13*cc02d7e2SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*cc02d7e2SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
15*cc02d7e2SAndroid Build Coastguard Worker // limitations under the License.
16*cc02d7e2SAndroid Build Coastguard Worker 
17*cc02d7e2SAndroid Build Coastguard Worker #endregion
18*cc02d7e2SAndroid Build Coastguard Worker 
19*cc02d7e2SAndroid Build Coastguard Worker using System.Runtime.InteropServices;  // For NETCORE tests.
20*cc02d7e2SAndroid Build Coastguard Worker using Microsoft.Build.Framework;
21*cc02d7e2SAndroid Build Coastguard Worker using Moq;
22*cc02d7e2SAndroid Build Coastguard Worker using NUnit.Framework;
23*cc02d7e2SAndroid Build Coastguard Worker 
24*cc02d7e2SAndroid Build Coastguard Worker namespace Grpc.Tools.Tests
25*cc02d7e2SAndroid Build Coastguard Worker {
26*cc02d7e2SAndroid Build Coastguard Worker     public class ProtoToolsPlatformTaskTest
27*cc02d7e2SAndroid Build Coastguard Worker     {
28*cc02d7e2SAndroid Build Coastguard Worker         ProtoToolsPlatform _task;
29*cc02d7e2SAndroid Build Coastguard Worker         int _cpuMatched, _osMatched;
30*cc02d7e2SAndroid Build Coastguard Worker 
31*cc02d7e2SAndroid Build Coastguard Worker         [OneTimeSetUp]
SetUp()32*cc02d7e2SAndroid Build Coastguard Worker         public void SetUp()
33*cc02d7e2SAndroid Build Coastguard Worker         {
34*cc02d7e2SAndroid Build Coastguard Worker             var mockEng = new Mock<IBuildEngine>();
35*cc02d7e2SAndroid Build Coastguard Worker             _task = new ProtoToolsPlatform() { BuildEngine = mockEng.Object };
36*cc02d7e2SAndroid Build Coastguard Worker             _task.Execute();
37*cc02d7e2SAndroid Build Coastguard Worker         }
38*cc02d7e2SAndroid Build Coastguard Worker 
39*cc02d7e2SAndroid Build Coastguard Worker         [OneTimeTearDown]
TearDown()40*cc02d7e2SAndroid Build Coastguard Worker         public void TearDown()
41*cc02d7e2SAndroid Build Coastguard Worker         {
42*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual(1, _cpuMatched, "CPU type detection failed");
43*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual(1, _osMatched, "OS detection failed");
44*cc02d7e2SAndroid Build Coastguard Worker         }
45*cc02d7e2SAndroid Build Coastguard Worker 
46*cc02d7e2SAndroid Build Coastguard Worker #if NETCORE
47*cc02d7e2SAndroid Build Coastguard Worker         // PlatformAttribute not yet available in NUnit, coming soon:
48*cc02d7e2SAndroid Build Coastguard Worker         // https://github.com/nunit/nunit/pull/3003.
49*cc02d7e2SAndroid Build Coastguard Worker         // Use same test case names as under the full framework.
50*cc02d7e2SAndroid Build Coastguard Worker         [Test]
CpuIsX86()51*cc02d7e2SAndroid Build Coastguard Worker         public void CpuIsX86()
52*cc02d7e2SAndroid Build Coastguard Worker         {
53*cc02d7e2SAndroid Build Coastguard Worker             if (RuntimeInformation.OSArchitecture == Architecture.X86)
54*cc02d7e2SAndroid Build Coastguard Worker             {
55*cc02d7e2SAndroid Build Coastguard Worker                 _cpuMatched++;
56*cc02d7e2SAndroid Build Coastguard Worker                 Assert.AreEqual("x86", _task.Cpu);
57*cc02d7e2SAndroid Build Coastguard Worker             }
58*cc02d7e2SAndroid Build Coastguard Worker         }
59*cc02d7e2SAndroid Build Coastguard Worker 
60*cc02d7e2SAndroid Build Coastguard Worker         [Test]
CpuIsX64()61*cc02d7e2SAndroid Build Coastguard Worker         public void CpuIsX64()
62*cc02d7e2SAndroid Build Coastguard Worker         {
63*cc02d7e2SAndroid Build Coastguard Worker             if (RuntimeInformation.OSArchitecture == Architecture.X64)
64*cc02d7e2SAndroid Build Coastguard Worker             {
65*cc02d7e2SAndroid Build Coastguard Worker                 _cpuMatched++;
66*cc02d7e2SAndroid Build Coastguard Worker                 Assert.AreEqual("x64", _task.Cpu);
67*cc02d7e2SAndroid Build Coastguard Worker             }
68*cc02d7e2SAndroid Build Coastguard Worker         }
69*cc02d7e2SAndroid Build Coastguard Worker 
70*cc02d7e2SAndroid Build Coastguard Worker         [Test]
CpuIsArm64()71*cc02d7e2SAndroid Build Coastguard Worker         public void CpuIsArm64()
72*cc02d7e2SAndroid Build Coastguard Worker         {
73*cc02d7e2SAndroid Build Coastguard Worker             if (RuntimeInformation.OSArchitecture == Architecture.Arm64)
74*cc02d7e2SAndroid Build Coastguard Worker             {
75*cc02d7e2SAndroid Build Coastguard Worker                 _cpuMatched++;
76*cc02d7e2SAndroid Build Coastguard Worker 
77*cc02d7e2SAndroid Build Coastguard Worker                 // On macosx arm64, x64 is used until a native protoc is shipped
78*cc02d7e2SAndroid Build Coastguard Worker                 if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
79*cc02d7e2SAndroid Build Coastguard Worker                 {
80*cc02d7e2SAndroid Build Coastguard Worker                     Assert.AreEqual("x64", _task.Cpu);
81*cc02d7e2SAndroid Build Coastguard Worker                 }
82*cc02d7e2SAndroid Build Coastguard Worker                 // On windows arm64, x86 is used until a native protoc is shipped
83*cc02d7e2SAndroid Build Coastguard Worker                 else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
84*cc02d7e2SAndroid Build Coastguard Worker                 {
85*cc02d7e2SAndroid Build Coastguard Worker                     Assert.AreEqual("x86", _task.Cpu);
86*cc02d7e2SAndroid Build Coastguard Worker                 }
87*cc02d7e2SAndroid Build Coastguard Worker                 else
88*cc02d7e2SAndroid Build Coastguard Worker                 {
89*cc02d7e2SAndroid Build Coastguard Worker                     Assert.AreEqual("arm64", _task.Cpu);
90*cc02d7e2SAndroid Build Coastguard Worker                 }
91*cc02d7e2SAndroid Build Coastguard Worker             }
92*cc02d7e2SAndroid Build Coastguard Worker         }
93*cc02d7e2SAndroid Build Coastguard Worker 
94*cc02d7e2SAndroid Build Coastguard Worker         [Test]
OsIsWindows()95*cc02d7e2SAndroid Build Coastguard Worker         public void OsIsWindows()
96*cc02d7e2SAndroid Build Coastguard Worker         {
97*cc02d7e2SAndroid Build Coastguard Worker             if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
98*cc02d7e2SAndroid Build Coastguard Worker             {
99*cc02d7e2SAndroid Build Coastguard Worker                 _osMatched++;
100*cc02d7e2SAndroid Build Coastguard Worker                 Assert.AreEqual("windows", _task.Os);
101*cc02d7e2SAndroid Build Coastguard Worker             }
102*cc02d7e2SAndroid Build Coastguard Worker         }
103*cc02d7e2SAndroid Build Coastguard Worker 
104*cc02d7e2SAndroid Build Coastguard Worker         [Test]
OsIsLinux()105*cc02d7e2SAndroid Build Coastguard Worker         public void OsIsLinux()
106*cc02d7e2SAndroid Build Coastguard Worker         {
107*cc02d7e2SAndroid Build Coastguard Worker             if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
108*cc02d7e2SAndroid Build Coastguard Worker             {
109*cc02d7e2SAndroid Build Coastguard Worker                 _osMatched++;
110*cc02d7e2SAndroid Build Coastguard Worker                 Assert.AreEqual("linux", _task.Os);
111*cc02d7e2SAndroid Build Coastguard Worker             }
112*cc02d7e2SAndroid Build Coastguard Worker         }
113*cc02d7e2SAndroid Build Coastguard Worker 
114*cc02d7e2SAndroid Build Coastguard Worker         [Test]
OsIsMacOsX()115*cc02d7e2SAndroid Build Coastguard Worker         public void OsIsMacOsX()
116*cc02d7e2SAndroid Build Coastguard Worker         {
117*cc02d7e2SAndroid Build Coastguard Worker             if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
118*cc02d7e2SAndroid Build Coastguard Worker             {
119*cc02d7e2SAndroid Build Coastguard Worker                 _osMatched++;
120*cc02d7e2SAndroid Build Coastguard Worker                 Assert.AreEqual("macosx", _task.Os);
121*cc02d7e2SAndroid Build Coastguard Worker             }
122*cc02d7e2SAndroid Build Coastguard Worker         }
123*cc02d7e2SAndroid Build Coastguard Worker 
124*cc02d7e2SAndroid Build Coastguard Worker #else  // !NETCORE, i.e. full framework.
125*cc02d7e2SAndroid Build Coastguard Worker 
126*cc02d7e2SAndroid Build Coastguard Worker         [Test, Platform("32-Bit")]
CpuIsX86()127*cc02d7e2SAndroid Build Coastguard Worker         public void CpuIsX86()
128*cc02d7e2SAndroid Build Coastguard Worker         {
129*cc02d7e2SAndroid Build Coastguard Worker             _cpuMatched++;
130*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual("x86", _task.Cpu);
131*cc02d7e2SAndroid Build Coastguard Worker         }
132*cc02d7e2SAndroid Build Coastguard Worker 
133*cc02d7e2SAndroid Build Coastguard Worker         [Test, Platform("64-Bit")]
CpuIsX64()134*cc02d7e2SAndroid Build Coastguard Worker         public void CpuIsX64()
135*cc02d7e2SAndroid Build Coastguard Worker         {
136*cc02d7e2SAndroid Build Coastguard Worker             _cpuMatched++;
137*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual("x64", _task.Cpu);
138*cc02d7e2SAndroid Build Coastguard Worker         }
139*cc02d7e2SAndroid Build Coastguard Worker 
140*cc02d7e2SAndroid Build Coastguard Worker         [Test, Platform("Win")]
OsIsWindows()141*cc02d7e2SAndroid Build Coastguard Worker         public void OsIsWindows()
142*cc02d7e2SAndroid Build Coastguard Worker         {
143*cc02d7e2SAndroid Build Coastguard Worker             _osMatched++;
144*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual("windows", _task.Os);
145*cc02d7e2SAndroid Build Coastguard Worker         }
146*cc02d7e2SAndroid Build Coastguard Worker 
147*cc02d7e2SAndroid Build Coastguard Worker         [Test, Platform("Linux")]
OsIsLinux()148*cc02d7e2SAndroid Build Coastguard Worker         public void OsIsLinux()
149*cc02d7e2SAndroid Build Coastguard Worker         {
150*cc02d7e2SAndroid Build Coastguard Worker             _osMatched++;
151*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual("linux", _task.Os);
152*cc02d7e2SAndroid Build Coastguard Worker         }
153*cc02d7e2SAndroid Build Coastguard Worker 
154*cc02d7e2SAndroid Build Coastguard Worker         [Test, Platform("MacOSX")]
OsIsMacOsX()155*cc02d7e2SAndroid Build Coastguard Worker         public void OsIsMacOsX()
156*cc02d7e2SAndroid Build Coastguard Worker         {
157*cc02d7e2SAndroid Build Coastguard Worker             _osMatched++;
158*cc02d7e2SAndroid Build Coastguard Worker             Assert.AreEqual("macosx", _task.Os);
159*cc02d7e2SAndroid Build Coastguard Worker         }
160*cc02d7e2SAndroid Build Coastguard Worker 
161*cc02d7e2SAndroid Build Coastguard Worker #endif  // NETCORE
162*cc02d7e2SAndroid Build Coastguard Worker     };
163*cc02d7e2SAndroid Build Coastguard Worker }
164