Skip to content

Commit 47e2f95

Browse files
committed
Unit tests were divided into separate assemblies
1 parent ecc8a73 commit 47e2f95

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+707
-82
lines changed

MsieJavaScriptEngine.sln

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,17 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine", "src
1414
EndProject
1515
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2A0DC227-73C5-4E3A-853A-83007AD56B85}"
1616
EndProject
17-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test", "test\MsieJavaScriptEngine.Test\MsieJavaScriptEngine.Test.csproj", "{B9D71EDB-31DD-444A-8606-07D873CA6E42}"
17+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test.Common", "test\MsieJavaScriptEngine.Test.Common\MsieJavaScriptEngine.Test.Common.csproj", "{A4085B9E-A5D3-4749-BD07-6D1EB7C23820}"
18+
EndProject
19+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test.Auto", "test\MsieJavaScriptEngine.Test.Auto\MsieJavaScriptEngine.Test.Auto.csproj", "{A4874C43-2097-4FDB-882A-0D74E5508BBD}"
20+
EndProject
21+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test.ChakraEdgeJsRt", "test\MsieJavaScriptEngine.Test.ChakraEdgeJsRt\MsieJavaScriptEngine.Test.ChakraEdgeJsRt.csproj", "{16DBAC89-4FFB-40AC-B437-FE5C8D6B6731}"
22+
EndProject
23+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test.ChakraIeJsRt", "test\MsieJavaScriptEngine.Test.ChakraIeJsRt\MsieJavaScriptEngine.Test.ChakraIeJsRt.csproj", "{7064E0DB-0B73-4534-84D0-1C96DA7E5AD1}"
24+
EndProject
25+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test.ChakraActiveScript", "test\MsieJavaScriptEngine.Test.ChakraActiveScript\MsieJavaScriptEngine.Test.ChakraActiveScript.csproj", "{21EA96CC-71E2-4CDD-B95A-C75EBD4AF2FA}"
26+
EndProject
27+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MsieJavaScriptEngine.Test.Classic", "test\MsieJavaScriptEngine.Test.Classic\MsieJavaScriptEngine.Test.Classic.csproj", "{50453B82-ACBF-4E25-9582-1113F274D53E}"
1828
EndProject
1929
Global
2030
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -26,16 +36,41 @@ Global
2636
{D672BC49-C454-4975-BD25-A555B9BDD793}.Debug|Any CPU.Build.0 = Debug|Any CPU
2737
{D672BC49-C454-4975-BD25-A555B9BDD793}.Release|Any CPU.ActiveCfg = Release|Any CPU
2838
{D672BC49-C454-4975-BD25-A555B9BDD793}.Release|Any CPU.Build.0 = Release|Any CPU
29-
{B9D71EDB-31DD-444A-8606-07D873CA6E42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30-
{B9D71EDB-31DD-444A-8606-07D873CA6E42}.Debug|Any CPU.Build.0 = Debug|Any CPU
31-
{B9D71EDB-31DD-444A-8606-07D873CA6E42}.Release|Any CPU.ActiveCfg = Release|Any CPU
32-
{B9D71EDB-31DD-444A-8606-07D873CA6E42}.Release|Any CPU.Build.0 = Release|Any CPU
39+
{A4085B9E-A5D3-4749-BD07-6D1EB7C23820}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
40+
{A4085B9E-A5D3-4749-BD07-6D1EB7C23820}.Debug|Any CPU.Build.0 = Debug|Any CPU
41+
{A4085B9E-A5D3-4749-BD07-6D1EB7C23820}.Release|Any CPU.ActiveCfg = Release|Any CPU
42+
{A4085B9E-A5D3-4749-BD07-6D1EB7C23820}.Release|Any CPU.Build.0 = Release|Any CPU
43+
{A4874C43-2097-4FDB-882A-0D74E5508BBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
44+
{A4874C43-2097-4FDB-882A-0D74E5508BBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
45+
{A4874C43-2097-4FDB-882A-0D74E5508BBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
46+
{A4874C43-2097-4FDB-882A-0D74E5508BBD}.Release|Any CPU.Build.0 = Release|Any CPU
47+
{16DBAC89-4FFB-40AC-B437-FE5C8D6B6731}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
48+
{16DBAC89-4FFB-40AC-B437-FE5C8D6B6731}.Debug|Any CPU.Build.0 = Debug|Any CPU
49+
{16DBAC89-4FFB-40AC-B437-FE5C8D6B6731}.Release|Any CPU.ActiveCfg = Release|Any CPU
50+
{16DBAC89-4FFB-40AC-B437-FE5C8D6B6731}.Release|Any CPU.Build.0 = Release|Any CPU
51+
{7064E0DB-0B73-4534-84D0-1C96DA7E5AD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52+
{7064E0DB-0B73-4534-84D0-1C96DA7E5AD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
53+
{7064E0DB-0B73-4534-84D0-1C96DA7E5AD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
54+
{7064E0DB-0B73-4534-84D0-1C96DA7E5AD1}.Release|Any CPU.Build.0 = Release|Any CPU
55+
{21EA96CC-71E2-4CDD-B95A-C75EBD4AF2FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
56+
{21EA96CC-71E2-4CDD-B95A-C75EBD4AF2FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
57+
{21EA96CC-71E2-4CDD-B95A-C75EBD4AF2FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
58+
{21EA96CC-71E2-4CDD-B95A-C75EBD4AF2FA}.Release|Any CPU.Build.0 = Release|Any CPU
59+
{50453B82-ACBF-4E25-9582-1113F274D53E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
60+
{50453B82-ACBF-4E25-9582-1113F274D53E}.Debug|Any CPU.Build.0 = Debug|Any CPU
61+
{50453B82-ACBF-4E25-9582-1113F274D53E}.Release|Any CPU.ActiveCfg = Release|Any CPU
62+
{50453B82-ACBF-4E25-9582-1113F274D53E}.Release|Any CPU.Build.0 = Release|Any CPU
3363
EndGlobalSection
3464
GlobalSection(SolutionProperties) = preSolution
3565
HideSolutionNode = FALSE
3666
EndGlobalSection
3767
GlobalSection(NestedProjects) = preSolution
3868
{D672BC49-C454-4975-BD25-A555B9BDD793} = {1ACC225D-6787-47AB-AF34-C6021002390C}
39-
{B9D71EDB-31DD-444A-8606-07D873CA6E42} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
69+
{A4085B9E-A5D3-4749-BD07-6D1EB7C23820} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
70+
{A4874C43-2097-4FDB-882A-0D74E5508BBD} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
71+
{16DBAC89-4FFB-40AC-B437-FE5C8D6B6731} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
72+
{7064E0DB-0B73-4534-84D0-1C96DA7E5AD1} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
73+
{21EA96CC-71E2-4CDD-B95A-C75EBD4AF2FA} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
74+
{50453B82-ACBF-4E25-9582-1113F274D53E} = {2A0DC227-73C5-4E3A-853A-83007AD56B85}
4075
EndGlobalSection
4176
EndGlobal

src/MsieJavaScriptEngine/JsRt/Edge/ChakraEdgeJsRtJsEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public ChakraEdgeJsRtJsEngine()
5454
string errorMessage;
5555
if (e.ErrorCode == JsErrorCode.WrongThread)
5656
{
57-
errorMessage = Strings.Runtime_JsEnginesChakraJsRtAndActiveScriptConflict;
57+
errorMessage = Strings.Runtime_JsEnginesConflictOnMachine;
5858
}
5959
else
6060
{

src/MsieJavaScriptEngine/JsRt/Ie/ChakraIeJsRtJsEngine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ChakraIeJsRtJsEngine()
5959
string errorMessage;
6060
if (e.ErrorCode == JsErrorCode.WrongThread)
6161
{
62-
errorMessage = Strings.Runtime_JsEnginesChakraJsRtAndActiveScriptConflict;
62+
errorMessage = Strings.Runtime_JsEnginesConflictOnMachine;
6363
}
6464
else
6565
{

src/MsieJavaScriptEngine/MsieJsEngine.cs

Lines changed: 89 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Text;
66

77
using ActiveScript;
8+
using Constants;
89
using Helpers;
910
using JsRt.Edge;
1011
using JsRt.Ie;
@@ -21,6 +22,16 @@ public sealed class MsieJsEngine : IDisposable
2122
/// </summary>
2223
private IInnerJsEngine _jsEngine;
2324

25+
/// <summary>
26+
/// Current JavaScript engine mode
27+
/// </summary>
28+
private static JsEngineMode _currentMode;
29+
30+
/// <summary>
31+
/// Synchronizer of JavaScript engines creation
32+
/// </summary>
33+
private static readonly object _creationSynchronizer = new object();
34+
2435
/// <summary>
2536
/// Flag that object is destroyed
2637
/// </summary>
@@ -79,24 +90,84 @@ public MsieJsEngine(JsEngineSettings settings)
7990
}
8091
}
8192

82-
switch (processedEngineMode)
83-
{
84-
case JsEngineMode.ChakraEdgeJsRt:
85-
_jsEngine = new ChakraEdgeJsRtJsEngine();
86-
break;
87-
case JsEngineMode.ChakraIeJsRt:
88-
_jsEngine = new ChakraIeJsRtJsEngine();
89-
break;
90-
case JsEngineMode.ChakraActiveScript:
91-
_jsEngine = new ChakraActiveScriptJsEngine();
92-
break;
93-
case JsEngineMode.Classic:
94-
_jsEngine = new ClassicActiveScriptJsEngine(settings.UseEcmaScript5Polyfill,
95-
settings.UseJson2Library);
96-
break;
97-
default:
98-
throw new NotSupportedException(
99-
string.Format(Strings.Runtime_JsEngineModeNotSupported, processedEngineMode));
93+
lock (_creationSynchronizer)
94+
{
95+
JsEngineMode previousMode = _currentMode;
96+
97+
switch (processedEngineMode)
98+
{
99+
case JsEngineMode.ChakraEdgeJsRt:
100+
if (previousMode != JsEngineMode.ChakraIeJsRt
101+
&& previousMode != JsEngineMode.ChakraActiveScript)
102+
{
103+
_jsEngine = new ChakraEdgeJsRtJsEngine();
104+
}
105+
else if (previousMode == JsEngineMode.ChakraIeJsRt)
106+
{
107+
throw new JsEngineLoadException(
108+
string.Format(
109+
Strings.Runtime_JsEnginesConflictInProcess,
110+
JsEngineModeName.ChakraEdgeJsRt,
111+
JsEngineModeName.ChakraIeJsRt
112+
)
113+
);
114+
}
115+
else if (previousMode == JsEngineMode.ChakraActiveScript)
116+
{
117+
throw new JsEngineLoadException(
118+
string.Format(
119+
Strings.Runtime_JsEnginesConflictInProcess,
120+
JsEngineModeName.ChakraEdgeJsRt,
121+
JsEngineModeName.ChakraActiveScript
122+
)
123+
);
124+
}
125+
126+
break;
127+
case JsEngineMode.ChakraIeJsRt:
128+
if (previousMode != JsEngineMode.ChakraEdgeJsRt)
129+
{
130+
_jsEngine = new ChakraIeJsRtJsEngine();
131+
}
132+
else
133+
{
134+
throw new JsEngineLoadException(
135+
string.Format(
136+
Strings.Runtime_JsEnginesConflictInProcess,
137+
JsEngineModeName.ChakraIeJsRt,
138+
JsEngineModeName.ChakraEdgeJsRt
139+
)
140+
);
141+
}
142+
143+
break;
144+
case JsEngineMode.ChakraActiveScript:
145+
if (previousMode != JsEngineMode.ChakraEdgeJsRt)
146+
{
147+
_jsEngine = new ChakraActiveScriptJsEngine();
148+
}
149+
else
150+
{
151+
throw new JsEngineLoadException(
152+
string.Format(
153+
Strings.Runtime_JsEnginesConflictInProcess,
154+
JsEngineModeName.ChakraActiveScript,
155+
JsEngineModeName.ChakraEdgeJsRt
156+
)
157+
);
158+
}
159+
160+
break;
161+
case JsEngineMode.Classic:
162+
_jsEngine = new ClassicActiveScriptJsEngine(settings.UseEcmaScript5Polyfill,
163+
settings.UseJson2Library);
164+
break;
165+
default:
166+
throw new NotSupportedException(
167+
string.Format(Strings.Runtime_JsEngineModeNotSupported, processedEngineMode));
168+
}
169+
170+
_currentMode = processedEngineMode;
100171
}
101172
}
102173

src/MsieJavaScriptEngine/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[assembly: AssemblyDescription("")]
66
[assembly: AssemblyConfiguration("")]
77
[assembly: AssemblyCompany("")]
8-
[assembly: AssemblyProduct("MSIE JavaScript Engine for .Net")]
8+
[assembly: AssemblyProduct("MSIE JavaScript Engine")]
99
[assembly: AssemblyCopyright("Copyright © 2012-2015 Andrey Taritsyn")]
1010
[assembly: AssemblyTrademark("")]
1111
[assembly: AssemblyCulture("")]

src/MsieJavaScriptEngine/Resources/Strings.Designer.cs

Lines changed: 12 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/MsieJavaScriptEngine/Resources/Strings.resx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,11 @@ See more details:
207207
<data name="Runtime_JsEngineModeNotSupported" xml:space="preserve">
208208
<value>Selected '{0}' mode of JavaScript engine is not supported!</value>
209209
</data>
210-
<data name="Runtime_JsEnginesChakraJsRtAndActiveScriptConflict" xml:space="preserve">
211-
<value>It is prohibited to use the Chakra JsRT and the Chakra ActiveScript on one machine at a time.</value>
210+
<data name="Runtime_JsEnginesConflictInProcess" xml:space="preserve">
211+
<value>It is prohibited to use the {0} and {1} engines in one process.</value>
212+
</data>
213+
<data name="Runtime_JsEnginesConflictOnMachine" xml:space="preserve">
214+
<value>It is prohibited to use the Chakra JsRT and Chakra ActiveScript engines on one machine at a time.</value>
212215
</data>
213216
<data name="Runtime_JsEnginesNotFound" xml:space="preserve">
214217
<value>Could not found none of the JavaScript engines. Perhaps you have not installed the Internet Explorer browser.</value>

src/MsieJavaScriptEngine/Resources/Strings.ru-ru.resx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,11 @@
207207
<data name="Runtime_JsEngineModeNotSupported" xml:space="preserve">
208208
<value>Выбранный вами режим JavaScript-движка "{0}" не поддерживается!</value>
209209
</data>
210-
<data name="Runtime_JsEnginesChakraJsRtAndActiveScriptConflict" xml:space="preserve">
211-
<value>Запрещается использовать Chakra JsRT и Chakra ActiveScript на одном компьютере одновременно.</value>
210+
<data name="Runtime_JsEnginesConflictInProcess" xml:space="preserve">
211+
<value>Нельзя использовать {0} и {1} движки в одном процессе.</value>
212+
</data>
213+
<data name="Runtime_JsEnginesConflictOnMachine" xml:space="preserve">
214+
<value>Нельзя использовать Chakra JsRT и Chakra ActiveScript движки на одном компьютере одновременно.</value>
212215
</data>
213216
<data name="Runtime_JsEnginesNotFound" xml:space="preserve">
214217
<value>Не удалось найти ни один из JavaScript-движков! Возможно, на вашем компьютере не установлен браузер Internet Explorer.</value>

test/MsieJavaScriptEngine.Test/A_Auto/CommonTests.cs renamed to test/MsieJavaScriptEngine.Test.Auto/CommonTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
namespace MsieJavaScriptEngine.Test.A_Auto
1+
namespace MsieJavaScriptEngine.Test.Auto
22
{
33
using MsieJavaScriptEngine;
4+
using Common;
45

56
public class CommonTests : CommonTestsBase
67
{

test/MsieJavaScriptEngine.Test/A_Auto/Es5Tests.cs renamed to test/MsieJavaScriptEngine.Test.Auto/Es5Tests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
namespace MsieJavaScriptEngine.Test.A_Auto
1+
namespace MsieJavaScriptEngine.Test.Auto
22
{
33
using NUnit.Framework;
44

55
using MsieJavaScriptEngine;
6+
using Common;
67

78
[TestFixture]
89
public class Es5Tests : Es5TestsBase

0 commit comments

Comments
 (0)