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