Fix bugs in sizing TableLayoutPanel (Xamarin bug 18638)
[mono.git] / mcs / class / System.ComponentModel.Composition / Tests / UnitTestFramework / System / Collections / EnumerableExtensions.cs
1 // -----------------------------------------------------------------------\r
2 // Copyright (c) Microsoft Corporation.  All rights reserved.\r
3 // -----------------------------------------------------------------------\r
4 using System;\r
5 using System.Collections;\r
6 using System.Collections.Generic;\r
7 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
8 \r
9 namespace Microsoft.Internal.Collections\r
10 {\r
11     public static class EnumerableExtensions\r
12     {\r
13         public static int Count(this IEnumerable source)\r
14         {\r
15             int count = 0;\r
16 \r
17             foreach (object o in source)\r
18             {\r
19                 count++;\r
20             }\r
21 \r
22             return count;\r
23         }\r
24 \r
25         public static IEnumerable<T> ToEnumerable<T>(this IEnumerable source)\r
26         {\r
27             foreach (object value in source)\r
28             {\r
29                 yield return (T)value;\r
30             }\r
31         }\r
32 \r
33         public static List<object> ToList(this IEnumerable source)\r
34         {\r
35             var enumerable = source.ToEnumerable<object>();\r
36 \r
37             return System.Linq.Enumerable.ToList(enumerable);\r
38         }\r
39 \r
40         public static T AssertSingle<T>(this IEnumerable<T> source)\r
41         {\r
42             return AssertSingle(source, t => true);\r
43         }\r
44 \r
45         public static T AssertSingle<T>(this IEnumerable<T> source, string message)\r
46         {\r
47             return AssertSingle(source, t => true, message);\r
48         }\r
49 \r
50         public static T AssertSingle<T>(this IEnumerable<T> source, Func<T, bool> predicate)\r
51         {\r
52             return AssertSingle(source, predicate, "Expecting a single item matching the predicate in the collection.");\r
53         }\r
54 \r
55         public static T AssertSingle<T>(this IEnumerable<T> source, Func<T, bool> predicate, string message)\r
56         {\r
57             int count = 0;\r
58             T ret = default(T);\r
59             foreach (T t in source)\r
60             {\r
61                 if (predicate(t))\r
62                 {\r
63                     count++;\r
64                     ret = t;\r
65                 }\r
66             }\r
67 \r
68             Assert.AreEqual(1, count, message);\r
69             return ret;\r
70         }\r
71     }\r
72 }\r