xref: /aosp_15_r20/external/flatbuffers/tests/FlatBuffers.Test/Assert.cs (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Worker /*
2*890232f2SAndroid Build Coastguard Worker  * Copyright 2014 Google Inc. All rights reserved.
3*890232f2SAndroid Build Coastguard Worker  *
4*890232f2SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*890232f2SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*890232f2SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*890232f2SAndroid Build Coastguard Worker  *
8*890232f2SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
9*890232f2SAndroid Build Coastguard Worker  *
10*890232f2SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*890232f2SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*890232f2SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*890232f2SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*890232f2SAndroid Build Coastguard Worker  * limitations under the License.
15*890232f2SAndroid Build Coastguard Worker  */
16*890232f2SAndroid Build Coastguard Worker 
17*890232f2SAndroid Build Coastguard Worker using System;
18*890232f2SAndroid Build Coastguard Worker using System.Collections.Generic;
19*890232f2SAndroid Build Coastguard Worker using System.Linq;
20*890232f2SAndroid Build Coastguard Worker using System.Text;
21*890232f2SAndroid Build Coastguard Worker 
22*890232f2SAndroid Build Coastguard Worker namespace FlatBuffers.Test
23*890232f2SAndroid Build Coastguard Worker {
24*890232f2SAndroid Build Coastguard Worker 
25*890232f2SAndroid Build Coastguard Worker     public class AssertFailedException : Exception
26*890232f2SAndroid Build Coastguard Worker     {
27*890232f2SAndroid Build Coastguard Worker         private readonly object _expected;
28*890232f2SAndroid Build Coastguard Worker         private readonly object _actual;
29*890232f2SAndroid Build Coastguard Worker 
AssertFailedException(object expected, object actual)30*890232f2SAndroid Build Coastguard Worker         public AssertFailedException(object expected, object actual)
31*890232f2SAndroid Build Coastguard Worker         {
32*890232f2SAndroid Build Coastguard Worker             _expected = expected;
33*890232f2SAndroid Build Coastguard Worker             _actual = actual;
34*890232f2SAndroid Build Coastguard Worker         }
35*890232f2SAndroid Build Coastguard Worker 
36*890232f2SAndroid Build Coastguard Worker         public override string Message
37*890232f2SAndroid Build Coastguard Worker         {
38*890232f2SAndroid Build Coastguard Worker             get { return string.Format("Expected {0} but saw {1}", _expected, _actual); }
39*890232f2SAndroid Build Coastguard Worker         }
40*890232f2SAndroid Build Coastguard Worker     }
41*890232f2SAndroid Build Coastguard Worker 
42*890232f2SAndroid Build Coastguard Worker     public class AssertArrayFailedException : Exception
43*890232f2SAndroid Build Coastguard Worker     {
44*890232f2SAndroid Build Coastguard Worker         private readonly int _index;
45*890232f2SAndroid Build Coastguard Worker         private readonly object _expected;
46*890232f2SAndroid Build Coastguard Worker         private readonly object _actual;
47*890232f2SAndroid Build Coastguard Worker 
AssertArrayFailedException(int index, object expected, object actual)48*890232f2SAndroid Build Coastguard Worker         public AssertArrayFailedException(int index, object expected, object actual)
49*890232f2SAndroid Build Coastguard Worker         {
50*890232f2SAndroid Build Coastguard Worker             _index = index;
51*890232f2SAndroid Build Coastguard Worker             _expected = expected;
52*890232f2SAndroid Build Coastguard Worker             _actual = actual;
53*890232f2SAndroid Build Coastguard Worker         }
54*890232f2SAndroid Build Coastguard Worker 
55*890232f2SAndroid Build Coastguard Worker         public override string Message
56*890232f2SAndroid Build Coastguard Worker         {
57*890232f2SAndroid Build Coastguard Worker             get { return string.Format("Expected {0} at index {1} but saw {2}", _expected, _index, _actual); }
58*890232f2SAndroid Build Coastguard Worker         }
59*890232f2SAndroid Build Coastguard Worker     }
60*890232f2SAndroid Build Coastguard Worker 
61*890232f2SAndroid Build Coastguard Worker     public class AssertUnexpectedThrowException : Exception
62*890232f2SAndroid Build Coastguard Worker     {
63*890232f2SAndroid Build Coastguard Worker         private readonly object _expected;
64*890232f2SAndroid Build Coastguard Worker 
AssertUnexpectedThrowException(object expected)65*890232f2SAndroid Build Coastguard Worker         public AssertUnexpectedThrowException(object expected)
66*890232f2SAndroid Build Coastguard Worker         {
67*890232f2SAndroid Build Coastguard Worker             _expected = expected;
68*890232f2SAndroid Build Coastguard Worker         }
69*890232f2SAndroid Build Coastguard Worker 
70*890232f2SAndroid Build Coastguard Worker         public override string Message
71*890232f2SAndroid Build Coastguard Worker         {
72*890232f2SAndroid Build Coastguard Worker             get { return string.Format("Expected exception of type {0}", _expected); }
73*890232f2SAndroid Build Coastguard Worker         }
74*890232f2SAndroid Build Coastguard Worker     }
75*890232f2SAndroid Build Coastguard Worker 
76*890232f2SAndroid Build Coastguard Worker     public static class Assert
77*890232f2SAndroid Build Coastguard Worker     {
AreEqual(T expected, T actual)78*890232f2SAndroid Build Coastguard Worker         public static void AreEqual<T>(T expected, T actual)
79*890232f2SAndroid Build Coastguard Worker         {
80*890232f2SAndroid Build Coastguard Worker             if (!expected.Equals(actual))
81*890232f2SAndroid Build Coastguard Worker             {
82*890232f2SAndroid Build Coastguard Worker                 throw new AssertFailedException(expected, actual);
83*890232f2SAndroid Build Coastguard Worker             }
84*890232f2SAndroid Build Coastguard Worker         }
85*890232f2SAndroid Build Coastguard Worker 
ArrayEqual(T[] expected, T[] actual)86*890232f2SAndroid Build Coastguard Worker         public static void ArrayEqual<T>(T[] expected, T[] actual)
87*890232f2SAndroid Build Coastguard Worker         {
88*890232f2SAndroid Build Coastguard Worker             if (expected.Length != actual.Length)
89*890232f2SAndroid Build Coastguard Worker             {
90*890232f2SAndroid Build Coastguard Worker                 throw new AssertFailedException(expected, actual);
91*890232f2SAndroid Build Coastguard Worker             }
92*890232f2SAndroid Build Coastguard Worker 
93*890232f2SAndroid Build Coastguard Worker             for(var i = 0; i < expected.Length; ++i)
94*890232f2SAndroid Build Coastguard Worker             {
95*890232f2SAndroid Build Coastguard Worker                 if (!expected[i].Equals(actual[i]))
96*890232f2SAndroid Build Coastguard Worker                 {
97*890232f2SAndroid Build Coastguard Worker                     throw new AssertArrayFailedException(i, expected, actual);
98*890232f2SAndroid Build Coastguard Worker                 }
99*890232f2SAndroid Build Coastguard Worker             }
100*890232f2SAndroid Build Coastguard Worker         }
101*890232f2SAndroid Build Coastguard Worker 
IsTrue(bool value)102*890232f2SAndroid Build Coastguard Worker         public static void IsTrue(bool value)
103*890232f2SAndroid Build Coastguard Worker         {
104*890232f2SAndroid Build Coastguard Worker             if (!value)
105*890232f2SAndroid Build Coastguard Worker             {
106*890232f2SAndroid Build Coastguard Worker                 throw new AssertFailedException(true, value);
107*890232f2SAndroid Build Coastguard Worker             }
108*890232f2SAndroid Build Coastguard Worker         }
109*890232f2SAndroid Build Coastguard Worker 
IsFalse(bool value)110*890232f2SAndroid Build Coastguard Worker         public static void IsFalse(bool value)
111*890232f2SAndroid Build Coastguard Worker         {
112*890232f2SAndroid Build Coastguard Worker             if (value)
113*890232f2SAndroid Build Coastguard Worker             {
114*890232f2SAndroid Build Coastguard Worker                 throw new AssertFailedException(false, value);
115*890232f2SAndroid Build Coastguard Worker             }
116*890232f2SAndroid Build Coastguard Worker         }
117*890232f2SAndroid Build Coastguard Worker 
118*890232f2SAndroid Build Coastguard Worker         public static void Throws<T>(Action action) where T : Exception
119*890232f2SAndroid Build Coastguard Worker         {
120*890232f2SAndroid Build Coastguard Worker             var caught = false;
121*890232f2SAndroid Build Coastguard Worker             try
122*890232f2SAndroid Build Coastguard Worker             {
123*890232f2SAndroid Build Coastguard Worker                 action();
124*890232f2SAndroid Build Coastguard Worker             }
125*890232f2SAndroid Build Coastguard Worker             catch (T)
126*890232f2SAndroid Build Coastguard Worker             {
127*890232f2SAndroid Build Coastguard Worker                 caught = true;
128*890232f2SAndroid Build Coastguard Worker             }
129*890232f2SAndroid Build Coastguard Worker 
130*890232f2SAndroid Build Coastguard Worker             if (!caught)
131*890232f2SAndroid Build Coastguard Worker             {
132*890232f2SAndroid Build Coastguard Worker                 throw new AssertUnexpectedThrowException(typeof (T));
133*890232f2SAndroid Build Coastguard Worker             }
134*890232f2SAndroid Build Coastguard Worker         }
135*890232f2SAndroid Build Coastguard Worker     }
136*890232f2SAndroid Build Coastguard Worker }
137