102 lines
2.1 KiB
C#
102 lines
2.1 KiB
C#
|
//
|
||
|
// MonoTests.Remoting.CallSeq.cs
|
||
|
//
|
||
|
// Author: Lluis Sanchez Gual (lluis@ximian.com)
|
||
|
//
|
||
|
// 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; }
|
||
|
}
|
||
|
}
|
||
|
}
|