Initial commit

This commit is contained in:
2026-07-03 16:31:37 +07:00
commit 899c7c637d
1939 changed files with 641750 additions and 0 deletions

View File

@@ -0,0 +1,180 @@
using RobotNet10.ScriptEngine;
using RobotNet10.ScriptEngine.Models;
using RobotNet10.ScriptEngine.Shared;
namespace RobotNet10.ScriptEngine.Test;
[TestFixture]
public class VariableManagerTests
{
private VariableManager _variableManager = null!;
[SetUp]
public void SetUp()
{
_variableManager = new VariableManager();
}
[Test]
public void Load_WithValidVariables_ShouldLoadSuccessfully()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 42, true, true),
new ScriptVariableModel("TestString", typeof(string), "Hello", true, false)
};
// Act
_variableManager.Load(variables);
// Assert
Assert.That(_variableManager.HasVariable("TestInt"), Is.True);
Assert.That(_variableManager.HasVariable("TestString"), Is.True);
Assert.That(_variableManager.GetVariable<int>("TestInt"), Is.EqualTo(42));
Assert.That(_variableManager.GetVariable<string>("TestString"), Is.EqualTo("Hello"));
}
[Test]
public void Load_WithNullVariables_ShouldThrowArgumentNullException()
{
// Act & Assert
Assert.Throws<ArgumentNullException>(() => _variableManager.Load(null!));
}
[Test]
public void GetVariable_WithExistingVariable_ShouldReturnValue()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 100, true, true)
};
_variableManager.Load(variables);
// Act
var value = _variableManager.GetVariable<int>("TestInt");
// Assert
Assert.That(value, Is.EqualTo(100));
}
[Test]
public void GetVariable_WithNonExistingVariable_ShouldReturnNull()
{
// Act
var value = _variableManager.GetVariable("NonExisting");
// Assert
Assert.That(value, Is.Null);
}
[Test]
public void SetVariable_WithPublicWriteVariable_ShouldSetSuccessfully()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 0, true, true)
};
_variableManager.Load(variables);
// Act
var result = _variableManager.SetVariable("TestInt", 50);
// Assert
Assert.That(result, Is.True);
Assert.That(_variableManager.GetVariable<int>("TestInt"), Is.EqualTo(50));
}
[Test]
public void SetVariable_WithNonPublicWriteVariable_ShouldFail()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 0, true, false)
};
_variableManager.Load(variables);
// Act
var result = _variableManager.SetVariable("TestInt", 50);
// Assert
Assert.That(result, Is.False);
Assert.That(_variableManager.GetVariable<int>("TestInt"), Is.EqualTo(0));
}
[Test]
public void SetValue_WithStringValue_ShouldConvertAndSet()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 0, true, true)
};
_variableManager.Load(variables);
// Act
var result = _variableManager.SetValue("TestInt", "123");
// Assert
Assert.That(result.IsSuccess, Is.True);
Assert.That(_variableManager.GetVariable<int>("TestInt"), Is.EqualTo(123));
}
[Test]
public void SetValue_WithNonWritableVariable_ShouldFail()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 0, true, false)
};
_variableManager.Load(variables);
// Act
var result = _variableManager.SetValue("TestInt", "123");
// Assert
Assert.That(result.IsSuccess, Is.False);
}
[Test]
public void GetVariables_ShouldReturnPublicReadableVariables()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("PublicVar", typeof(int), 1, true, true),
new ScriptVariableModel("PrivateVar", typeof(int), 2, false, false)
};
_variableManager.Load(variables);
// Act
var result = _variableManager.GetVariables().ToArray();
// Assert
Assert.That(result.Length, Is.EqualTo(1));
Assert.That(result[0].Name, Is.EqualTo("PublicVar"));
}
[Test]
public void Reset_ShouldClearAllVariables()
{
// Arrange
var variables = new[]
{
new ScriptVariableModel("TestInt", typeof(int), 42, true, true)
};
_variableManager.Load(variables);
Assert.That(_variableManager.HasVariable("TestInt"), Is.True);
// Act
_variableManager.Reset();
// Assert
Assert.That(_variableManager.HasVariable("TestInt"), Is.False);
}
}