Merge pull request #4998 from kumpera/fix_56684
[mono.git] / mcs / tests / gtest-iter-19.cs
1 using System;
2 using System.Linq;
3 using System.Collections;
4 using System.Collections.Generic;
5
6 public static class IEnumerableTransform
7 {
8
9         public static IEnumerable<TOut> Transform<TOut> (this IEnumerable<int> input, EmitterFunc<TOut> rule)
10         {
11                 foreach (var v in input) {
12                         TOut output;
13                         rule (out output);
14                         yield return output;
15                 }
16         }
17
18         public static EmitterFunc<TOut> Emit<TOut> (TOut result)
19         {
20                 return delegate (out TOut output) {
21                         output = result;
22                 };
23         }
24
25         public delegate void EmitterFunc<TOut> (out TOut output);
26
27         public static int Main ()
28         {
29                 IEnumerable<int> arr = new int[3];
30                 if (!arr.Transform<char> (IEnumerableTransform.Emit<char> ('t')).SequenceEqual(new char[] { 't', 't', 't'}))
31                         return 1;
32
33                 return 0;
34         }
35 }