| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- //
- // MonoTests.Remoting.CallSeq.cs
- //
- // Author: Lluis Sanchez Gual ([email protected])
- //
- // 2003 (C) Copyright, Ximian, Inc.
- //
- using System;
- using System.Threading;
- using System.Collections;
- using NUnit.Framework;
- namespace MonoTests.Remoting
- {
- public class CallSeq
- {
- static ArrayList calls = new ArrayList();
- static int checkPos = 0;
- static int writePos = 0;
- static string name = "";
- static ArrayList contexts = new ArrayList ();
- static int domId = 1;
- public static void Add (string msg)
- {
- writePos++;
- msg = writePos.ToString ("000") + " (d" + CommonDomainId + ",c" + CommonContextId + ") " + msg;
- calls.Add (msg);
- }
- public static int CommonContextId
- {
- get
- {
- int id = Thread.CurrentContext.ContextID;
- int idc = contexts.IndexOf (id);
- if (idc == -1)
- {
- idc = contexts.Count;
- contexts.Add (id);
- }
- return idc;
- }
- }
- public static int CommonDomainId
- {
- get { return domId; }
- set { domId = value; }
- }
- public static void Init (string str)
- {
- calls = new ArrayList();
- contexts = new ArrayList ();
- name = str;
- checkPos = 0;
- writePos = 0;
- }
- public static void Check (string msg, int domain)
- {
- bool optional = false;
- if (msg.StartsWith ("#"))
- {
- optional = true;
- msg = msg.Substring (1);
- }
- if (msg[6].ToString() != domain.ToString()) return;
- if (checkPos >= calls.Count)
- {
- if (!optional) Assert.Fail ("[" + name + "] Call check failed. Expected call not made: \"" + msg + "\"");
- else return;
- }
- string call = (string) calls[checkPos++];
- if (msg.Substring (3) != call.Substring (3))
- {
- if (optional) checkPos--;
- else Assert.Fail ("[" + name + "] Call check failed in step " + (checkPos+1) + ". Expected \"" + msg + "\" found \"" + call + "\"");
- }
- }
- public static void Check (string[] msgs, int domain)
- {
- foreach (string msg in msgs)
- Check (msg, domain);
- }
- public static ArrayList Seq
- {
- get { return calls; }
- set { calls = value; }
- }
- }
- }
|