Merge pull request #5082 from kumpera/fix-ro-fs-file-delete
[mono.git] / mono / tests / priority.cs
1 using System;
2 using System.Threading;
3 using System.Runtime;
4 using System.Text;
5
6 public class Tests
7 {
8         private static int mainThreadId;
9
10         public static int Main ()
11         {
12                 mainThreadId = Thread.CurrentThread.ManagedThreadId;
13                 return TestDriver.RunTests (typeof (Tests));
14         }
15
16         public static void TestMethod()
17         {
18                 Console.WriteLine("{0} with {1} priority",
19                         Thread.CurrentThread.Name, 
20                         Thread.CurrentThread.Priority.ToString());
21                 Thread.Sleep(6000);
22                 Console.WriteLine("{0} with {1} priority",
23                         Thread.CurrentThread.Name, 
24                         Thread.CurrentThread.Priority.ToString());
25         }
26         
27         public static int test_0_main_thread_priority ()
28         {
29                 Console.WriteLine("Testing main thread's priority");
30                 if (Thread.CurrentThread.ManagedThreadId != mainThreadId)
31                 {
32                         Console.WriteLine("test_0_main_thread_priority() must be run on the main thread");
33                         return 1;
34                 }
35
36                 var before = Thread.CurrentThread.Priority;
37                 Console.WriteLine("Priority: {0}", before);
38                 if (before != ThreadPriority.Normal)
39                         return 2;
40
41                 Console.WriteLine("Setting main thread's priority to AboveNormal");
42                 Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
43                 var after = Thread.CurrentThread.Priority;
44                 Console.WriteLine("Priority: {0} {1}", before, after);
45                 if (after != ThreadPriority.AboveNormal)
46                         return 3;
47
48                 before = after;
49                 Console.WriteLine("Setting main thread's priority to BelowNormal");
50                 Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
51                 after = Thread.CurrentThread.Priority;
52                 Console.WriteLine("Priority: {0} {1}", before, after);
53                 if (after != ThreadPriority.BelowNormal)
54                         return 4;
55
56                 before = after;
57                 Console.WriteLine("Setting main thread's priority to Normal");
58                 Thread.CurrentThread.Priority = ThreadPriority.Normal;
59                 after = Thread.CurrentThread.Priority;
60                 Console.WriteLine("Priority: {0} {1}", before, after);
61                 if (after != ThreadPriority.Normal)
62                         return 5;
63
64                 return 0;
65         }
66
67         public static int test_0_thread_priority () 
68         {
69                 int res = 0;
70
71                 Thread Me = Thread.CurrentThread;
72                 Thread TestThread = new Thread(new ThreadStart(TestMethod));
73
74                 Console.WriteLine("Starting test thread with priority to AboveNormal");  
75                 ThreadPriority before = TestThread.Priority;
76                 TestThread.Priority = ThreadPriority.AboveNormal;
77                 TestThread.Name = "TestMethod";
78                 TestThread.Start();
79                 ThreadPriority after = TestThread.Priority;
80                 Console.WriteLine("Priority: {0} {1}",before,after);
81                 if (before != ThreadPriority.Normal)
82                         res = 1;
83                 else if (after != ThreadPriority.AboveNormal)
84                         res = 2;
85                 else {
86                         TestThread.Priority = ThreadPriority.Normal;
87                         after = TestThread.Priority;
88                         Console.WriteLine("Setting test thread priority to Normal");     
89                         Thread.Sleep(1000);
90                         Console.WriteLine("Priority: {0} {1}",before,after);
91
92                         if (after != ThreadPriority.Normal) 
93                                 res = 3;
94                         else {
95                                 Console.WriteLine("Setting test thread priority to AboveNormal");        
96                                 before = after;
97                                 TestThread.Priority=ThreadPriority.AboveNormal;
98                                 after = TestThread.Priority;
99                                 Thread.Sleep(1000);
100                                 Console.WriteLine("Priority: {0} {1}",before,after);
101
102                                 if (after != ThreadPriority.AboveNormal) 
103                                         res = 4;
104                                 else {
105                                         before = after;
106                                         Console.WriteLine("Setting test thread priority to BelowNormal"); 
107                                         TestThread.Priority=ThreadPriority.BelowNormal;
108                                         after = TestThread.Priority;
109                                         Console.WriteLine("Priority: {0} {1}",before,after);
110                                         Thread.Sleep(1000);
111                                         
112                                         if (after != ThreadPriority.BelowNormal)
113                                                 res = 5;
114                                         else {
115                                                 before = after;
116                                                 Console.WriteLine("Setting test thread priority back to Normal");        
117                                                 TestThread.Priority=ThreadPriority.Normal;
118                                                 after = TestThread.Priority;
119                                                 Console.WriteLine("Priority: {0} {1}",before,after);
120                                                 Thread.Sleep(1000);
121
122                                                 if (after != ThreadPriority.Normal)
123                                                         res = 6;
124                                         }
125                                 }
126                         }
127                 }
128                 TestThread.Join();
129                 return(res);
130         }
131 }