private void Encoding_HostHelper(Encoding/*!*/ encoding, string/*!*/ specialChars, bool shouldSucceed) {
var preamble = "# coding = " + encoding.WebName + "\r\n";
var src = "$X = '" + specialChars + "'";
var content = new List<byte>();
content.AddRange(BinaryEncoding.Instance.GetBytes(preamble));
content.AddRange(encoding.GetBytes(src));
var source = Engine.CreateScriptSource(new BinaryContentProvider(content.ToArray()), null);
// test encoding:
try {
var detectedEncoding = source.DetectEncoding();
Assert(encoding.WebName == detectedEncoding.WebName);
} catch (IOException) {
Assert(!shouldSucceed);
}
// test content:
try {
var code = source.GetCode();
Assert(StringComparer.Ordinal.Equals(code, preamble + src));
} catch (IOException) {
Assert(!shouldSucceed);
}
}