2 // MonoTests.Remoting.CallSeq.cs
\r
4 // Author: Lluis Sanchez Gual (lluis@ximian.com)
\r
6 // 2003 (C) Copyright, Ximian, Inc.
\r
10 using System.Threading;
\r
11 using System.Collections;
\r
12 using NUnit.Framework;
\r
14 namespace MonoTests.Remoting
\r
16 public class CallSeq
\r
18 static ArrayList calls = new ArrayList();
\r
19 static int checkPos = 0;
\r
20 static int writePos = 0;
\r
21 static string name = "";
\r
22 static ArrayList contexts = new ArrayList ();
\r
23 static int domId = 1;
\r
25 public static void Add (string msg)
\r
29 msg = writePos.ToString ("000") + " (d" + CommonDomainId + ",c" + CommonContextId + ") " + msg;
\r
33 public static int CommonContextId
\r
37 int id = Thread.CurrentContext.ContextID;
\r
38 int idc = contexts.IndexOf (id);
\r
41 idc = contexts.Count;
\r
48 public static int CommonDomainId
\r
50 get { return domId; }
\r
51 set { domId = value; }
\r
54 public static void Init (string str)
\r
56 calls = new ArrayList();
\r
57 contexts = new ArrayList ();
\r
63 public static void Check (string msg, int domain)
\r
65 bool optional = false;
\r
66 if (msg.StartsWith ("#"))
\r
69 msg = msg.Substring (1);
\r
72 if (msg[6].ToString() != domain.ToString()) return;
\r
74 if (checkPos >= calls.Count)
\r
76 if (!optional) Assert.Fail ("[" + name + "] Call check failed. Expected call not made: \"" + msg + "\"");
\r
80 string call = (string) calls[checkPos++];
\r
82 if (msg.Substring (3) != call.Substring (3))
\r
84 if (optional) checkPos--;
\r
85 else Assert.Fail ("[" + name + "] Call check failed in step " + (checkPos+1) + ". Expected \"" + msg + "\" found \"" + call + "\"");
\r
89 public static void Check (string[] msgs, int domain)
\r
91 foreach (string msg in msgs)
\r
92 Check (msg, domain);
\r
95 public static ArrayList Seq
\r
97 get { return calls; }
\r
98 set { calls = value; }
\r