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