-
Notifications
You must be signed in to change notification settings - Fork 160
Expand file tree
/
Copy pathDynamicHostItemTest.cs
More file actions
70 lines (57 loc) · 2.69 KB
/
DynamicHostItemTest.cs
File metadata and controls
70 lines (57 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
using System.Diagnostics.CodeAnalysis;
using Microsoft.ClearScript.V8;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Microsoft.ClearScript.Test
{
[TestClass]
[SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "Test classes use TestCleanupAttribute for deterministic teardown.")]
[SuppressMessage("ReSharper", "StringLiteralTypo", Justification = "Typos in test code are acceptable.")]
public partial class DynamicHostItemTest : ClearScriptTest
{
#region setup / teardown
private V8ScriptEngine engine;
[TestInitialize]
public void TestInitialize()
{
BaseTestInitialize();
engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging);
}
[TestCleanup]
public void TestCleanup()
{
engine.Dispose();
BaseTestCleanup();
}
#endregion
#region test methods
// ReSharper disable InconsistentNaming
[TestMethod, TestCategory("DynamicHostItem")]
public void DynamicHostItem_StaticMethod()
{
const string format = "{0} foo {1} bar {2} baz {3} qux {4} quux {5}";
var args = new object[] { 1, 2, 3, 4, 5, 6 };
engine.Script.mscorlib = new HostTypeCollection("mscorlib");
Assert.AreEqual(string.Format(format, args), engine.Script.mscorlib.System.String.Format(format, args));
Assert.AreEqual(string.Format(format, args), engine.Script.mscorlib["System"].String["Format"](format, args));
}
[TestMethod, TestCategory("DynamicHostItem")]
public void DynamicHostItem_Conversion()
{
var hostTypeCollection = new HostTypeCollection("mscorlib");
engine.Script.mscorlib = hostTypeCollection;
Assert.AreEqual(((PropertyBag)hostTypeCollection["System"]).Keys.Count, ((PropertyBag)engine.Script.mscorlib.System).Keys.Count);
Assert.AreEqual(((PropertyBag)hostTypeCollection["System"]).Keys.Count, ((PropertyBag)engine.Script["mscorlib"]["System"]).Keys.Count);
}
[TestMethod, TestCategory("DynamicHostItem")]
public void DynamicHostItem_Nonexistent()
{
engine.Script.mscorlib = new HostTypeCollection("mscorlib");
Assert.IsInstanceOfType(engine.Script.mscorlib.BogusNonexistentProperty, typeof(Undefined));
Assert.IsInstanceOfType(engine.Script["mscorlib"]["BogusNonexistentProperty"], typeof(Undefined));
}
// ReSharper restore InconsistentNaming
#endregion
}
}