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.Reflection; 21*890232f2SAndroid Build Coastguard Worker 22*890232f2SAndroid Build Coastguard Worker namespace FlatBuffers.Test 23*890232f2SAndroid Build Coastguard Worker { 24*890232f2SAndroid Build Coastguard Worker static class Program 25*890232f2SAndroid Build Coastguard Worker { Main(string[] args)26*890232f2SAndroid Build Coastguard Worker public static int Main(string[] args) 27*890232f2SAndroid Build Coastguard Worker { 28*890232f2SAndroid Build Coastguard Worker var testResults = new List<bool>(); 29*890232f2SAndroid Build Coastguard Worker 30*890232f2SAndroid Build Coastguard Worker var testClasses = Assembly.GetExecutingAssembly().GetExportedTypes() 31*890232f2SAndroid Build Coastguard Worker .Where(t => t.IsClass && t.GetCustomAttributes(typeof (FlatBuffersTestClassAttribute), false).Length > 0); 32*890232f2SAndroid Build Coastguard Worker 33*890232f2SAndroid Build Coastguard Worker foreach (var testClass in testClasses) 34*890232f2SAndroid Build Coastguard Worker { 35*890232f2SAndroid Build Coastguard Worker var methods = testClass.GetMethods(BindingFlags.Public | 36*890232f2SAndroid Build Coastguard Worker BindingFlags.Instance) 37*890232f2SAndroid Build Coastguard Worker .Where(m => m.GetCustomAttributes(typeof(FlatBuffersTestMethodAttribute), false).Length > 0); 38*890232f2SAndroid Build Coastguard Worker 39*890232f2SAndroid Build Coastguard Worker var inst = Activator.CreateInstance(testClass); 40*890232f2SAndroid Build Coastguard Worker 41*890232f2SAndroid Build Coastguard Worker foreach (var method in methods) 42*890232f2SAndroid Build Coastguard Worker { 43*890232f2SAndroid Build Coastguard Worker try 44*890232f2SAndroid Build Coastguard Worker { 45*890232f2SAndroid Build Coastguard Worker method.Invoke(inst, new object[] { }); 46*890232f2SAndroid Build Coastguard Worker testResults.Add(true); 47*890232f2SAndroid Build Coastguard Worker } 48*890232f2SAndroid Build Coastguard Worker catch (Exception ex) 49*890232f2SAndroid Build Coastguard Worker { 50*890232f2SAndroid Build Coastguard Worker Console.WriteLine("{0}: FAILED when invoking {1} with error {2}", 51*890232f2SAndroid Build Coastguard Worker testClass.Name ,method.Name, ex.GetBaseException()); 52*890232f2SAndroid Build Coastguard Worker testResults.Add(false); 53*890232f2SAndroid Build Coastguard Worker } 54*890232f2SAndroid Build Coastguard Worker } 55*890232f2SAndroid Build Coastguard Worker } 56*890232f2SAndroid Build Coastguard Worker 57*890232f2SAndroid Build Coastguard Worker var failedCount = testResults.Count(i => i == false); 58*890232f2SAndroid Build Coastguard Worker 59*890232f2SAndroid Build Coastguard Worker Console.WriteLine("{0} tests run, {1} failed", testResults.Count, failedCount); 60*890232f2SAndroid Build Coastguard Worker 61*890232f2SAndroid Build Coastguard Worker if (failedCount > 0) 62*890232f2SAndroid Build Coastguard Worker { 63*890232f2SAndroid Build Coastguard Worker return -1; 64*890232f2SAndroid Build Coastguard Worker } 65*890232f2SAndroid Build Coastguard Worker return 0; 66*890232f2SAndroid Build Coastguard Worker } 67*890232f2SAndroid Build Coastguard Worker } 68*890232f2SAndroid Build Coastguard Worker } 69