From cc8bac76a62b3b06f44528f7836987d29e77db78 Mon Sep 17 00:00:00 2001 From: Stepami Date: Sat, 25 Apr 2026 17:01:27 +0300 Subject: [PATCH 1/3] refactor(IntegrationTests): location moved tests that expect ExitCode.Success to the SuccessPrograms folder --- .../{ => SuccessPrograms}/DumpOptionTests.cs | 2 +- .../{ => SuccessPrograms}/InputTests.cs | 2 +- .../{ => SuccessPrograms}/SuccessfulProgramsTests.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename tests/HydraScript.IntegrationTests/{ => SuccessPrograms}/DumpOptionTests.cs (96%) rename tests/HydraScript.IntegrationTests/{ => SuccessPrograms}/InputTests.cs (94%) rename tests/HydraScript.IntegrationTests/{ => SuccessPrograms}/SuccessfulProgramsTests.cs (93%) diff --git a/tests/HydraScript.IntegrationTests/DumpOptionTests.cs b/tests/HydraScript.IntegrationTests/SuccessPrograms/DumpOptionTests.cs similarity index 96% rename from tests/HydraScript.IntegrationTests/DumpOptionTests.cs rename to tests/HydraScript.IntegrationTests/SuccessPrograms/DumpOptionTests.cs index 29bee0be..7102853d 100644 --- a/tests/HydraScript.IntegrationTests/DumpOptionTests.cs +++ b/tests/HydraScript.IntegrationTests/SuccessPrograms/DumpOptionTests.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using NSubstitute; -namespace HydraScript.IntegrationTests; +namespace HydraScript.IntegrationTests.SuccessPrograms; public class DumpOptionTests(TestHostFixture fixture) : IClassFixture { diff --git a/tests/HydraScript.IntegrationTests/InputTests.cs b/tests/HydraScript.IntegrationTests/SuccessPrograms/InputTests.cs similarity index 94% rename from tests/HydraScript.IntegrationTests/InputTests.cs rename to tests/HydraScript.IntegrationTests/SuccessPrograms/InputTests.cs index 5722ab83..10b82031 100644 --- a/tests/HydraScript.IntegrationTests/InputTests.cs +++ b/tests/HydraScript.IntegrationTests/SuccessPrograms/InputTests.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using NSubstitute; -namespace HydraScript.IntegrationTests; +namespace HydraScript.IntegrationTests.SuccessPrograms; public class InputTests(TestHostFixture fixture) : IClassFixture { diff --git a/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs b/tests/HydraScript.IntegrationTests/SuccessPrograms/SuccessfulProgramsTests.cs similarity index 93% rename from tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs rename to tests/HydraScript.IntegrationTests/SuccessPrograms/SuccessfulProgramsTests.cs index ffd0df6d..9cf78807 100644 --- a/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs +++ b/tests/HydraScript.IntegrationTests/SuccessPrograms/SuccessfulProgramsTests.cs @@ -1,6 +1,6 @@ using HydraScript.Infrastructure; -namespace HydraScript.IntegrationTests; +namespace HydraScript.IntegrationTests.SuccessPrograms; public class SuccessfulProgramsTests(TestHostFixture fixture) : IClassFixture { From ed602b193953fdce6838a3f971af57f122ab1925 Mon Sep 17 00:00:00 2001 From: Stepami Date: Sat, 25 Apr 2026 17:04:21 +0300 Subject: [PATCH 2/3] test(IntegrationTests): ArithmeticTests added test that ensures equality correctness in case there is an addition to the left Closes #232 --- .../SuccessPrograms/ArithmeticTests.cs | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/HydraScript.IntegrationTests/SuccessPrograms/ArithmeticTests.cs diff --git a/tests/HydraScript.IntegrationTests/SuccessPrograms/ArithmeticTests.cs b/tests/HydraScript.IntegrationTests/SuccessPrograms/ArithmeticTests.cs new file mode 100644 index 00000000..f9889839 --- /dev/null +++ b/tests/HydraScript.IntegrationTests/SuccessPrograms/ArithmeticTests.cs @@ -0,0 +1,32 @@ +using HydraScript.Infrastructure; + +namespace HydraScript.IntegrationTests.SuccessPrograms; + +public class ArithmeticTests(TestHostFixture fixture) : IClassFixture +{ + /// + /// https://github.com/Stepami/hydrascript/issues/232 + /// + [Fact] + public void Equality_AdditionToTheLeft_Success() + { + const string script = + """ + let i = 0 + const s = "abcdef" + const sLen = ~s + while (i < sLen) { + if (i + 1 == sLen) + >>> "i is 5" + i = i + 1 + } + """; + using var runner = fixture.GetRunner( + new TestHostFixture.Options( + InMemoryScript: script)); + var code = runner.Invoke(); + code.Should().Be(Executor.ExitCodes.Success); + fixture.LogMessages.Should() + .Contain(log => log.Contains("i is 5")); + } +} \ No newline at end of file From 08ecd850ec7fb8e56719c3221edbf2e62c228748 Mon Sep 17 00:00:00 2001 From: Stepami Date: Sat, 25 Apr 2026 17:13:23 +0300 Subject: [PATCH 3/3] fix(BackEnd): Simple.cs ensure consistent type conversion for '~' operator cases Closes #232 --- .../Impl/Instructions/WithAssignment/Simple.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Domain/HydraScript.Domain.BackEnd/Impl/Instructions/WithAssignment/Simple.cs b/src/Domain/HydraScript.Domain.BackEnd/Impl/Instructions/WithAssignment/Simple.cs index b85c3ef0..e613c535 100644 --- a/src/Domain/HydraScript.Domain.BackEnd/Impl/Instructions/WithAssignment/Simple.cs +++ b/src/Domain/HydraScript.Domain.BackEnd/Impl/Instructions/WithAssignment/Simple.cs @@ -73,8 +73,8 @@ protected virtual void Assign() { "-" => -Convert.ToDouble(value), "!" => !Convert.ToBoolean(value), - "~" when value is List list => list.Count, - "~" when value is string @string => @string.Length, + "~" when value is List list => Convert.ToDouble(list.Count), + "~" when value is string @string => Convert.ToDouble(@string.Length), "" => value, _ => throw new NotSupportedException($"_operator {_operator} is not supported") };