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