[LoongArch64] Part-5:add loongarch support in some files for LoongArch64. (#21769)
[mono-project.git] / mcs / tests / test-async-10.cs
blob427bef64aab18141472ae8ce47e2e5a3068788c1
1 using System;
2 using System.Threading.Tasks;
3 using System.Threading;
4 using System.Collections.Generic;
7 class C
9 static async Task<string> TestCompositionCall_1 ()
11 return await Task.Factory.StartNew (() => { Thread.Sleep (10); return "a"; }).ConfigureAwait (false) +
12 await Task.Factory.StartNew (() => "b").ConfigureAwait (false) + "c";
15 static async Task<string> TestCompositionCall_2 ()
17 return "a" + 1.ToString () +
18 await Task.Factory.StartNew (() => "b").ConfigureAwait (false) + "c";
21 static async Task<int> TestCompositionCall_3 ()
23 return await M (await Task.Factory.StartNew (() => (byte) 4).ConfigureAwait (false)).ConfigureAwait (false);
26 static async Task<int> TestCompositionPair_1 ()
28 return await Task.Factory.StartNew (() => 3).ConfigureAwait (false) + 6;
31 static async Task<int> TestCompositionPair_2 ()
33 return await Task.Factory.StartNew (() => { Thread.Sleep (10); return 3; }).ConfigureAwait (false) -
34 await Task.Factory.StartNew (() => 4).ConfigureAwait (false);
37 static async Task<int> TestCompositionPair_3 ()
39 return -8 *
40 await Task.Factory.StartNew (() => 4).ConfigureAwait (false);
43 static async Task<int> TestCompositionPair_4 ()
45 return await Task.Factory.StartNew (() => 3).ConfigureAwait (false) +
46 await Task.Factory.StartNew (() => 4).ConfigureAwait (false) +
47 await Task.Factory.StartNew (() => 7).ConfigureAwait (false);
50 static Task<byte> M (byte value)
52 return Task.Factory.StartNew (() => value);
55 public static int Main ()
57 var t1 = TestCompositionCall_1 ();
58 if (!Task.WaitAll (new[] { t1 }, 1000))
59 return 1;
61 if (t1.Result != "abc")
62 return 2;
64 var t2 = TestCompositionCall_2 ();
65 if (!Task.WaitAll (new[] { t2 }, 1000))
66 return 3;
68 if (t2.Result != "a1bc")
69 return 4;
71 var t3 = TestCompositionCall_3 ();
72 if (!Task.WaitAll (new[] { t3 }, 1000))
73 return 5;
75 if (t3.Result != 4)
76 return 6;
78 var t5 = TestCompositionPair_1 ();
79 if (!Task.WaitAll (new[] { t5 }, 1000))
80 return 7;
82 if (t5.Result != 9)
83 return 8;
85 var t6 = TestCompositionPair_2 ();
86 if (!Task.WaitAll (new[] { t6 }, 1000))
87 return 9;
89 if (t6.Result != -1)
90 return 10;
92 var t7 = TestCompositionPair_3 ();
93 if (!Task.WaitAll (new[] { t7 }, 1000))
94 return 11;
96 if (t7.Result != -32)
97 return 12;
99 var t8 = TestCompositionPair_4 ();
100 if (!Task.WaitAll (new[] { t8 }, 1000))
101 return 13;
103 if (t8.Result != 14)
104 return 14;
106 Console.WriteLine ("ok");
107 return 0;