18c0d56d55abcc0559f1472979ed31a817e678731Wouter van Oortmerssen/* 2432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * Copyright 2014 Google Inc. All rights reserved. 3432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * 4432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * Licensed under the Apache License, Version 2.0 (the "License"); 5432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * you may not use this file except in compliance with the License. 6432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * You may obtain a copy of the License at 7432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * 8432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * http://www.apache.org/licenses/LICENSE-2.0 9432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * 10432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * Unless required by applicable law or agreed to in writing, software 11432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * distributed under the License is distributed on an "AS IS" BASIS, 12432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * See the License for the specific language governing permissions and 14432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai * limitations under the License. 15432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai */ 16432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokai 17432f3f26a40dbc51691c6d461d8a137c5e6c9f2eloverszhaokaiusing System; 189a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutionalusing System.Collections.Generic; 199a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutionalusing System.Linq; 209a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutionalusing System.Text; 219a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 229a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutionalnamespace FlatBuffers.Test 239a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional{ 249a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 259a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public class AssertFailedException : Exception 269a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 279a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional private readonly object _expected; 289a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional private readonly object _actual; 299a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 309a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public AssertFailedException(object expected, object actual) 319a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 329a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional _expected = expected; 339a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional _actual = actual; 349a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 359a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 369a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public override string Message 379a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 389a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional get { return string.Format("Expected {0} but saw {1}", _expected, _actual); } 399a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 409a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 419a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 429d66af6efc0498e90e2757659761ae0c4f797eeeevolutional public class AssertArrayFailedException : Exception 439d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 449d66af6efc0498e90e2757659761ae0c4f797eeeevolutional private readonly int _index; 459d66af6efc0498e90e2757659761ae0c4f797eeeevolutional private readonly object _expected; 469d66af6efc0498e90e2757659761ae0c4f797eeeevolutional private readonly object _actual; 479d66af6efc0498e90e2757659761ae0c4f797eeeevolutional 489d66af6efc0498e90e2757659761ae0c4f797eeeevolutional public AssertArrayFailedException(int index, object expected, object actual) 499d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 509d66af6efc0498e90e2757659761ae0c4f797eeeevolutional _index = index; 519d66af6efc0498e90e2757659761ae0c4f797eeeevolutional _expected = expected; 529d66af6efc0498e90e2757659761ae0c4f797eeeevolutional _actual = actual; 539d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 549d66af6efc0498e90e2757659761ae0c4f797eeeevolutional 559d66af6efc0498e90e2757659761ae0c4f797eeeevolutional public override string Message 569d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 579d66af6efc0498e90e2757659761ae0c4f797eeeevolutional get { return string.Format("Expected {0} at index {1} but saw {2}", _expected, _index, _actual); } 589d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 599d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 609d66af6efc0498e90e2757659761ae0c4f797eeeevolutional 619a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public class AssertUnexpectedThrowException : Exception 629a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 639a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional private readonly object _expected; 649a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 659a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public AssertUnexpectedThrowException(object expected) 669a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 679a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional _expected = expected; 689a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 699a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 709a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public override string Message 719a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 729a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional get { return string.Format("Expected exception of type {0}", _expected); } 739a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 749a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 759a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 769a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public static class Assert 779a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 789a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public static void AreEqual<T>(T expected, T actual) 799a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 809a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional if (!expected.Equals(actual)) 819a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 829a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional throw new AssertFailedException(expected, actual); 839a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 849a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 859a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 869d66af6efc0498e90e2757659761ae0c4f797eeeevolutional public static void ArrayEqual<T>(T[] expected, T[] actual) 879d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 889d66af6efc0498e90e2757659761ae0c4f797eeeevolutional if (expected.Length != actual.Length) 899d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 909d66af6efc0498e90e2757659761ae0c4f797eeeevolutional throw new AssertFailedException(expected, actual); 919d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 929d66af6efc0498e90e2757659761ae0c4f797eeeevolutional 939d66af6efc0498e90e2757659761ae0c4f797eeeevolutional for(var i = 0; i < expected.Length; ++i) 949d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 959d66af6efc0498e90e2757659761ae0c4f797eeeevolutional if (!expected[i].Equals(actual[i])) 969d66af6efc0498e90e2757659761ae0c4f797eeeevolutional { 979d66af6efc0498e90e2757659761ae0c4f797eeeevolutional throw new AssertArrayFailedException(i, expected, actual); 989d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 999d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 1009d66af6efc0498e90e2757659761ae0c4f797eeeevolutional } 1019d66af6efc0498e90e2757659761ae0c4f797eeeevolutional 1029a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public static void IsTrue(bool value) 1039a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 1049a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional if (!value) 1059a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 1069a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional throw new AssertFailedException(true, value); 1079a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 1089a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 1099a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 110e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins public static void IsFalse(bool value) 111e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins { 112e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins if (value) 113e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins { 114e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins throw new AssertFailedException(false, value); 115e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins } 116e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins } 117e083e466b85c1ae512193cee74e0dbd60be5ab87Michael Collins 1189a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional public static void Throws<T>(Action action) where T : Exception 1199a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 1209a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional var caught = false; 1219a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional try 1229a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 1239a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional action(); 1249a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 125557c88c0396220e79e9a43c07f8393a5c68b739dWouter van Oortmerssen catch (T) 1269a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 1279a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional caught = true; 1289a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 1299a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional 1309a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional if (!caught) 1319a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional { 1329a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional throw new AssertUnexpectedThrowException(typeof (T)); 1339a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 1349a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 1359a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional } 1369a1f7be6fd318ddd9545926b5925cf0a10a083e4evolutional} 137