blob: 41da6b3f1a41eb198d01df0443f35c675b8c4fc0 [file] [log] [blame]
using System;
using Lucene.Net.Expressions.JS;
using NUnit.Framework;
namespace Lucene.Net.Tests.Expressions.JS
{
public class TestJavascriptCompiler : Util.LuceneTestCase
{
[Test]
public virtual void TestValidCompiles()
{
IsNotNull(JavascriptCompiler.Compile("100"));
IsNotNull(JavascriptCompiler.Compile("valid0+100"));
IsNotNull(JavascriptCompiler.Compile("valid0+\n100"));
IsNotNull(JavascriptCompiler.Compile("logn(2, 20+10-5.0)"));
}
[Test]
public virtual void TestValidNamespaces()
{
IsNotNull(JavascriptCompiler.Compile("object.valid0"));
IsNotNull(JavascriptCompiler.Compile("object0.object1.valid1"));
}
//TODO: change all exceptions to ParseExceptions
[Test]
public virtual void TestInvalidNamespaces()
{
try
{
JavascriptCompiler.Compile("object.0invalid");
Fail();
}
catch (Exception)
{
}
//expected
try
{
JavascriptCompiler.Compile("0.invalid");
Fail();
}
catch (Exception)
{
}
//expected
try
{
JavascriptCompiler.Compile("object..invalid");
Fail();
}
catch (Exception)
{
}
//expected
try
{
JavascriptCompiler.Compile(".invalid");
Fail();
}
catch (Exception)
{
}
}
//expected
[Test]
public virtual void TestInvalidCompiles()
{
try
{
JavascriptCompiler.Compile("100 100");
Fail();
}
catch (Exception)
{
}
// expected exception
try
{
JavascriptCompiler.Compile("7*/-8");
Fail();
}
catch (Exception)
{
}
// expected exception
try
{
JavascriptCompiler.Compile("0y1234");
Fail();
}
catch (Exception)
{
}
// expected exception
try
{
JavascriptCompiler.Compile("500EE");
Fail();
}
catch (Exception)
{
}
// expected exception
try
{
JavascriptCompiler.Compile("500.5EE");
Fail();
}
catch (Exception)
{
}
}
[Test]
public virtual void TestEmpty()
{
try
{
JavascriptCompiler.Compile(string.Empty);
Fail();
}
catch (Exception)
{
}
// expected exception
try
{
JavascriptCompiler.Compile("()");
Fail();
}
catch (Exception)
{
}
// expected exception
try
{
JavascriptCompiler.Compile(" \r\n \n \t");
Fail();
}
catch (Exception)
{
}
}
// expected exception
[Test]
public virtual void TestNull()
{
try
{
JavascriptCompiler.Compile(null);
Fail();
}
catch (ArgumentNullException)
{
}
}
// expected exception
[Test]
public virtual void TestWrongArity()
{
try
{
JavascriptCompiler.Compile("tan()");
Fail();
}
catch (ArgumentException expected)
{
IsTrue(expected.Message.Contains("arguments for method call"
));
}
try
{
JavascriptCompiler.Compile("tan(1, 1)");
Fail();
}
catch (ArgumentException expected)
{
IsTrue(expected.Message.Contains("arguments for method call"
));
}
}
}
}