Unverified Commit 4541180d authored by Timothy Walter Lutt's avatar Timothy Walter Lutt Committed by GitHub
Browse files

Add crude tests for printing nil in various ways (#354)

* Add crude tests for printing nil in various ways

As requested in issue NLua/NLua#353 though all tests seem to pass

* Use stringbuilder instead of concat

* Simplify Lua function registration

* Make print return and assert eq in tests
parent 7dbad8a0
......@@ -1766,6 +1766,123 @@ namespace NLuaTest
}
}
[Test]
public void TestPrintNoParams()
{
using (Lua lua = new Lua())
{
lua.DoString(@"print()");
Assert.IsTrue(true);
}
}
[Test]
public void TestPrintSingleNil()
{
using (Lua lua = new Lua())
{
lua.DoString(@"print(nil)");
Assert.IsTrue(true);
}
}
[Test]
public void TestPrintManyNil()
{
using (Lua lua = new Lua())
{
lua.DoString(@"print(nil, nil, nil, nil, nil, nil)");
Assert.IsTrue(true);
}
}
[Test]
public void TestPrintManyNilFirstNumber()
{
using (Lua lua = new Lua())
{
lua.DoString(@"print(2, nil, nil, nil, nil, nil)");
Assert.IsTrue(true);
}
}
[Test]
public void TestPrintManyNilLastNumber()
{
using (Lua lua = new Lua())
{
lua.DoString(@"print(nil, nil, nil, nil, nil, 2)");
Assert.IsTrue(true);
}
}
[Test]
public void TestPrintNoParamsParamsDetour()
{
using (Lua lua = new Lua())
{
lua.RegisterFunction("print", null, typeof(PrintOverrides).GetMethod("GetPrintOutput"));
object[] outputs = lua.DoString(@"return print()");
string expected = "";
Assert.AreEqual(outputs[0], expected);
}
}
[Test]
public void TestPrintSingleNilParamsDetour()
{
using (Lua lua = new Lua())
{
lua.RegisterFunction("print", null, typeof(PrintOverrides).GetMethod("GetPrintOutput"));
object[] outputs = lua.DoString(@"return print(nil)");
string expected = "nil";
Assert.AreEqual(outputs[0], expected);
}
}
[Test]
public void TestPrintManyNilParamsDetour()
{
using (Lua lua = new Lua())
{
lua.RegisterFunction("print", null, typeof(PrintOverrides).GetMethod("GetPrintOutput"));
object[] outputs = lua.DoString(@"return print(nil, nil, nil, nil, nil, nil)");
string expected = string.Format("{1}{0}{1}{0}{1}{0}{1}{0}{1}{0}{1}", PrintOverrides.SYMBOL_PRINT_CONCAT, "nil");
Assert.AreEqual(outputs[0], expected);
}
}
[Test]
public void TestPrintManyNilFirstNumberParamsDetour()
{
using (Lua lua = new Lua())
{
lua.RegisterFunction("print", null, typeof(PrintOverrides).GetMethod("GetPrintOutput"));
object[] outputs = lua.DoString(@"return print(2, nil, nil, nil, nil, nil)");
string expected = string.Format("2{0}{1}{0}{1}{0}{1}{0}{1}{0}{1}", PrintOverrides.SYMBOL_PRINT_CONCAT, "nil");
Assert.AreEqual(outputs[0], expected);
}
}
[Test]
public void TestPrintManyNilLastNumberParamsDetour()
{
using (Lua lua = new Lua())
{
lua.RegisterFunction("print", null, typeof(PrintOverrides).GetMethod("GetPrintOutput"));
object[] outputs = lua.DoString(@"return print(nil, nil, nil, nil, nil, 2)");
string expected = string.Format("{1}{0}{1}{0}{1}{0}{1}{0}{1}{0}2", PrintOverrides.SYMBOL_PRINT_CONCAT, "nil");
Assert.AreEqual(outputs[0], expected);
}
}
[Test]
public void TestUnicodeChars()
{
......@@ -2762,9 +2879,9 @@ namespace NLuaTest
{
string script1 =
"function run()\n" +
" function callMethod() " +
" test:exceptionMethod() " +
" test:exceptionMethod() " +
" function callMethod() " +
" test:exceptionMethod() " +
" test:exceptionMethod() " +
" end" +
" err1, errMsg1 = pcall(callMethod);\n" +
// " err2, errMsg2 = pcall(callMethod);\n" +
......
......@@ -21,6 +21,7 @@
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate6Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\LuaTestDelegate7Handler.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\MyClass.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\PrintOverrides.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClass.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClass3.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TestTypes\TestClassGeneric.cs" />
......
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
namespace NLuaTest.TestTypes
{
public class PrintOverrides
{
public static char SYMBOL_PRINT_CONCAT = '\t';
// A custom print method as a replacement for the default Lua print function
public static string GetPrintOutput(params object[] arguments)
{
StringBuilder output = new StringBuilder();
if (arguments != null)
{
for(int i = 0; i < arguments.Length; i++)
{
object argument = arguments[i];
string concat = i > 0 ? SYMBOL_PRINT_CONCAT.ToString() : "";
if (argument == null)
{
output.Append(concat + "nil");
continue;
}
output.Append(concat + argument.ToString());
}
}
else
{
output.Append("nil");
}
return output.ToString();
}
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment