Files
FlaxEngine/Source/Tools/Flax.Build.Tests/TestCommandLine.cs
2022-01-14 13:31:12 +01:00

183 lines
5.8 KiB
C#

// Copyright (c) 2012-2022 Wojciech Figat. All rights reserved.
using NUnit.Framework;
#pragma warning disable CS0649
namespace Flax.Build.Tests
{
[TestFixture]
public class TestCommandLine
{
[Test, Sequential]
public void TestParseOptionOnly([Values(
"-something",
" \t \t-\t \tsomething\t ",
"-something=")]
string commandLine)
{
var options = CommandLine.Parse(commandLine);
Assert.AreEqual(1, options.Length);
Assert.AreEqual("something", options[0].Name);
Assert.IsTrue(string.IsNullOrEmpty(options[0].Value));
}
[Test, Sequential]
public void TestParseOneValue([Values(
"-something=value",
" \t \t-\t \tsomething\t =value ",
"-something=value ")]
string commandLine)
{
var options = CommandLine.Parse(commandLine);
Assert.AreEqual(1, options.Length);
Assert.AreEqual("something", options[0].Name);
Assert.AreEqual("value", options[0].Value);
}
[Test, Sequential]
public void TestParseTwoOptions([Values(
"-first -something=value",
"-first \"-something =value\"",
" \t -first \t-\t \tsomething\t =value ",
"-first\t\t-something=value ")]
string commandLine)
{
var options = CommandLine.Parse(commandLine);
Assert.AreEqual(2, options.Length);
Assert.AreEqual("first", options[0].Name);
Assert.IsTrue(string.IsNullOrEmpty(options[0].Value));
Assert.AreEqual("something", options[1].Name);
Assert.AreEqual("value", options[1].Value);
}
[Test, Sequential]
public void TestParsePathOption([Values(
"-something=value\\anotherFolder -second",
" \t \t-\t \tsomething\t =value\\anotherFolder -second ",
" -something\t =\"value\\anotherFolder\" -second ",
" -something\t =\'value\\anotherFolder\' -second ",
"\"-something\t =value\\anotherFolder\" -second ",
" \t\t-something=value\\anotherFolder -second ")]
string commandLine)
{
var options = CommandLine.Parse(commandLine);
Assert.AreEqual(2, options.Length);
Assert.AreEqual("something", options[0].Name);
Assert.AreEqual("value\\anotherFolder", options[0].Value);
Assert.AreEqual("second", options[1].Name);
Assert.IsTrue(string.IsNullOrEmpty(options[1].Value));
}
public enum Mode
{
Mode1,
Mode2,
Mode3,
}
class TestConfig1
{
/// <summary>
/// The option 1.
/// </summary>
[CommandLine("option1", "")]
public static bool Option1;
/// <summary>
/// The option 2.
/// </summary>
[CommandLine("option2", "")]
public static int Option2;
/// <summary>
/// The option 3.
/// </summary>
[CommandLine("option3", "")]
public static string Option3;
/// <summary>
/// The option 4.
/// </summary>
[CommandLine("option4", "")]
public static Mode Option4;
}
class TestConfig2
{
/// <summary>
/// The option 1.
/// </summary>
[CommandLine("option1", "")]
public bool Option1;
/// <summary>
/// The option 2.
/// </summary>
[CommandLine("option2", "")]
public int Option2;
/// <summary>
/// The option 3.
/// </summary>
[CommandLine("option3", "")]
public string Option3;
/// <summary>
/// The option 4.
/// </summary>
[CommandLine("option4", "")]
public Mode Option4;
}
class TestConfig3
{
[CommandLine("option1", "")]
public static string[] Option1;
}
[Test]
public void TestConfigure()
{
Assert.AreEqual(false, TestConfig1.Option1);
CommandLine.Configure(typeof(TestConfig1), "-option1 -option");
Assert.AreEqual(true, TestConfig1.Option1);
CommandLine.Configure(typeof(TestConfig1), "-option2=11");
Assert.AreEqual(11, TestConfig1.Option2);
CommandLine.Configure(typeof(TestConfig1), "-option3=hello -option4=Mode2");
Assert.AreEqual("hello", TestConfig1.Option3);
Assert.AreEqual(Mode.Mode2, TestConfig1.Option4);
}
[Test]
public void TestConfigureObject()
{
var obj = new TestConfig2();
Assert.AreEqual(false, obj.Option1);
CommandLine.Configure(obj, "-Option1 -Option");
Assert.AreEqual(true, obj.Option1);
CommandLine.Configure(obj, "-Option2=11");
Assert.AreEqual(11, obj.Option2);
CommandLine.Configure(obj, "-Option3=hello -Option4=Mode2");
Assert.AreEqual("hello", obj.Option3);
Assert.AreEqual(Mode.Mode2, obj.Option4);
}
[Test]
public void TestArray()
{
Assert.AreEqual(null, TestConfig3.Option1);
CommandLine.Configure(typeof(TestConfig3), "-option1=value1,value2");
Assert.NotNull(TestConfig3.Option1);
Assert.AreEqual(2, TestConfig3.Option1.Length);
Assert.AreEqual("value1", TestConfig3.Option1[0]);
Assert.AreEqual("value2", TestConfig3.Option1[1]);
}
}
}