Added unmanaged VBScrip Test.

--HG--
rename : aspclassiccompiler/VBScriptTest/TestRunner.cs => aspclassiccompiler/VBScriptTest/VBscriptDotNetTest.cs
This commit is contained in:
dotneteer 2011-04-14 23:27:40 -07:00
parent 48c9b91e26
commit 1a17abff27
14 changed files with 240 additions and 82 deletions

View file

@ -29,6 +29,22 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Dlrsoft.Asp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dlrsoft.Asp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

View file

@ -30,6 +30,22 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Dlrsoft.Asp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Dlrsoft.Asp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

View file

@ -84,6 +84,27 @@
<WarningLevel>1</WarningLevel> <WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032</NoWarn> <NoWarn>42016,42017,42018,42019,42032</NoWarn>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Debug\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>Dlrsoft.VBParser.xml</DocumentationFile>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032</NoWarn>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Release\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>Dlrsoft.VBParser.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032</NoWarn>
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System"> <Reference Include="System">
<Name>System</Name> <Name>System</Name>

View file

@ -1,20 +1,16 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Runtime.InteropServices;
namespace Dlrsoft.VBScript.Runtime namespace Dlrsoft.VBScript.Runtime
{ {
public interface IAssert public interface IAssert
{ {
void AreEqual(object expected, object actual);
void AreEqual(object expected, object actual, string message); void AreEqual(object expected, object actual, string message);
void AreNotEqual(object notExpected, object actual);
void AreNotEqual(object notExpected, object actual, string message); void AreNotEqual(object notExpected, object actual, string message);
void Fail();
void Fail(string message); void Fail(string message);
void IsFalse(bool condition);
void IsFalse(bool condition, string message); void IsFalse(bool condition, string message);
void IsTrue(bool condition);
void IsTrue(bool condition, string message); void IsTrue(bool condition, string message);
} }
} }

View file

@ -32,6 +32,22 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;USE35</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;USE35</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Dynamic, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Microsoft.Dynamic, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

View file

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
namespace Dlrsoft.VBScriptTest
{
public class DirectoryWalker
{
static public string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
static public void Walk(string path, Action<string> fileHandler)
{
FileAttributes fa = File.GetAttributes(path);
if ((fa & FileAttributes.Directory) == FileAttributes.Directory)
{
Walk(new DirectoryInfo(path), fileHandler);
}
else
{
Walk(new FileInfo(path), fileHandler);
}
}
static private void Walk(DirectoryInfo di, Action<string> fileHandler)
{
foreach (FileInfo fi in di.GetFiles())
{
Walk(fi, fileHandler);
}
foreach (DirectoryInfo cdi in di.GetDirectories())
{
Walk(cdi, fileHandler);
}
}
static private void Walk(FileInfo fi, Action<string> fileHandler)
{
fileHandler(fi.FullName);
}
}
}

View file

@ -3,58 +3,35 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using Dlrsoft.VBScript.Runtime; using Dlrsoft.VBScript.Runtime;
using NUnit.Framework; using NUnit.Framework;
using System.Runtime.InteropServices;
namespace Dlrsoft.VBScriptTest namespace Dlrsoft.VBScriptTest
{ {
[ComVisible(true)]
public class NunitAssert : IAssert public class NunitAssert : IAssert
{ {
#region IAssert Members #region IAssert Members
public void AreEqual(object expected, object actual)
{
Assert.AreEqual(expected, actual);
}
public void AreEqual(object expected, object actual, string message) public void AreEqual(object expected, object actual, string message)
{ {
Assert.AreEqual(expected, actual, message); Assert.AreEqual(expected, actual, message);
} }
public void AreNotEqual(object notExpected, object actual)
{
Assert.AreNotEqual(notExpected, actual);
}
public void AreNotEqual(object notExpected, object actual, string message) public void AreNotEqual(object notExpected, object actual, string message)
{ {
Assert.AreNotEqual(notExpected, actual, message); Assert.AreNotEqual(notExpected, actual, message);
} }
public void Fail()
{
Assert.Fail();
}
public void Fail(string message) public void Fail(string message)
{ {
Assert.Fail(message); Assert.Fail(message);
} }
public void IsFalse(bool condition)
{
Assert.IsFalse(condition);
}
public void IsFalse(bool condition, string message) public void IsFalse(bool condition, string message)
{ {
Assert.IsFalse(condition, message); Assert.IsFalse(condition, message);
} }
public void IsTrue(bool condition)
{
Assert.IsTrue(condition);
}
public void IsTrue(bool condition, string message) public void IsTrue(bool condition, string message)
{ {
Assert.IsTrue(condition, message); Assert.IsTrue(condition, message);

View file

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using System.IO;
namespace Dlrsoft.VBScriptTest
{
[TestFixture]
public class UnmanagedVBScriptTest
{
[Test]
public void RunTest()
{
DirectoryWalker.Walk(
Path.Combine(DirectoryWalker.AssemblyDirectory, "../../VBScripts"),
f =>
{
if (f.EndsWith(".vbs", StringComparison.InvariantCultureIgnoreCase))
{
try
{
UnmangedVBScriptHost.Run(f);
}
catch (Exception ex)
{
Assert.Fail(f + ":" + ex.Message);
}
}
}
);
}
}
}

View file

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Text;
using MSScriptControl;
using System.IO;
using Dlrsoft.VBScript.Runtime;
namespace Dlrsoft.VBScriptTest
{
public class UnmangedVBScriptHost
{
public static void Run(string filePath)
{
ScriptControlClass scripter = new ScriptControlClass();
try {
scripter.Language = "VBScript";
scripter.AllowUI = false;
scripter.UseSafeSubset = true;
IAssert assert = new NunitAssert();
scripter.AddObject("Assert", assert, false);
string code = File.ReadAllText(filePath);
scripter.AddCode(code);
}
catch(Exception ex)
{
throw;
}
finally
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(scripter);
scripter = null;
}
}
}
}

View file

@ -55,10 +55,13 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="DirectoryWalker.cs" />
<Compile Include="NunitAssert.cs" /> <Compile Include="NunitAssert.cs" />
<Compile Include="UnmanagedVBScriptTest.cs" />
<Compile Include="UnmangedVBScriptHost.cs" />
<Compile Include="VBScriptTestHelper.cs" /> <Compile Include="VBScriptTestHelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestRunner.cs" /> <Compile Include="VBscriptDotNetTest.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\VBScript\VBScript.csproj"> <ProjectReference Include="..\VBScript\VBScript.csproj">
@ -69,6 +72,16 @@
<ItemGroup> <ItemGroup>
<Content Include="VBScripts\DataTypes.vbs" /> <Content Include="VBScripts\DataTypes.vbs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<COMReference Include="MSScriptControl">
<Guid>{0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View file

@ -2,8 +2,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Dynamic; using System.Dynamic;
using System.Reflection;
using System.IO;
#if USE35 #if USE35
using Microsoft.Scripting.Hosting; using Microsoft.Scripting.Hosting;
using Microsoft.Scripting.Ast; using Microsoft.Scripting.Ast;
@ -39,48 +37,5 @@ namespace Dlrsoft.VBScriptTest
feo.SetVariable("Assert", new NunitAssert()); feo.SetVariable("Assert", new NunitAssert());
compiledCode.Execute(feo); compiledCode.Execute(feo);
} }
static public string AssemblyDirectory
{
get
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
static public void Walk(string path, Action<string> fileHandler)
{
FileAttributes fa = File.GetAttributes(path);
if ((fa & FileAttributes.Directory) == FileAttributes.Directory)
{
Walk(new DirectoryInfo(path), fileHandler);
}
else
{
Walk(new FileInfo(path), fileHandler);
}
}
static private void Walk(DirectoryInfo di, Action<string> fileHandler)
{
foreach (FileInfo fi in di.GetFiles())
{
Walk(fi, fileHandler);
}
foreach (DirectoryInfo cdi in di.GetDirectories())
{
Walk(cdi, fileHandler);
}
}
static private void Walk(FileInfo fi, Action<string> fileHandler)
{
fileHandler(fi.FullName);
}
} }
} }

View file

@ -1,2 +1,2 @@
dim a dim a
Assert.IsTrue(IsEmpty(a), "Unassigned variable must be empty") Assert.IsTrue IsEmpty(a), "Unassigned variable must be empty"

View file

@ -10,9 +10,9 @@ namespace Dlrsoft.VBScriptTest
/// Summary description for UnitTest1 /// Summary description for UnitTest1
/// </summary> /// </summary>
[TestFixture] [TestFixture]
public class TestRunner public class VBscriptDotNetTest
{ {
public TestRunner() public VBscriptDotNetTest()
{ {
// //
// TODO: Add constructor logic here // TODO: Add constructor logic here
@ -62,14 +62,21 @@ namespace Dlrsoft.VBScriptTest
[Test] [Test]
public void RunTest() public void RunTest()
{ {
VBScriptTestHelper.Walk( DirectoryWalker.Walk(
Path.Combine(VBScriptTestHelper.AssemblyDirectory, "../../VBScripts"), Path.Combine(DirectoryWalker.AssemblyDirectory, "../../VBScripts"),
f => f =>
{ {
if (f.EndsWith(".vbs", StringComparison.InvariantCultureIgnoreCase)) if (f.EndsWith(".vbs", StringComparison.InvariantCultureIgnoreCase))
{
try
{ {
VBScriptTestHelper.Run(f); VBScriptTestHelper.Run(f);
} }
catch (Exception ex)
{
Assert.Fail(f + ":" + ex.Message);
}
}
} }
); );
} }

View file

@ -30,6 +30,22 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Dynamic, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Microsoft.Dynamic, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>