nc_program_manager/NcProgramManager.Tests/Unit/FanucProgramParsingTests.cs
dtrentin a5d73db69a refactor(rename): FanucProgramManager → NcProgramManager
Phase 06 complete:
- Namespace renamed in 62 .cs files (namespace + using directives)
- AssemblyName + RootNamespace updated in csproj files
- FanucProgramManager.csproj → NcProgramManager.csproj
- FanucProgramManager.sln → NcProgramManager.sln
- FanucProgramManager.Tests/ → NcProgramManager.Tests/
- FANUCMachine.cs deleted (dead code, zero references)

Fanuc-prefixed class names kept (FanucMachine, FanucProgram,
IFanucMachine) — manufacturer identifiers, not project names.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:31:36 +02:00

185 lines
5.3 KiB
C#

using NUnit.Framework;
using NcProgramManager;
namespace NcProgramManager.Tests.Unit
{
[TestFixture]
public class FanucProgramParsingTests
{
private const string SimpleProgram =
"\nO1234(COMMENT)\n" +
"G0 X0 Y0\n" +
"M30\n" +
"%";
private const string ThreeFileInput =
"program:{\n" +
"\nO1234(COMMENT)\n" +
"G0 X0 Y0\n" +
"M30\n" +
"%\n" +
"}\n" +
"tooloffsetdata:{\n" +
"TOOL_DATA_LINE1\n" +
"}\n" +
"workzerooffset:{\n" +
"WORK_ZERO_LINE1\n" +
"}\n";
[Test]
public void Constructor_OldFormat_ProgramFieldSet()
{
var p = new FanucProgram(SimpleProgram);
Assert.That(p.Program, Is.Not.Null);
Assert.That(p.ToolOffsetData, Is.Null);
Assert.That(p.WorkZeroOffsetData, Is.Null);
}
[Test]
public void Constructor_ThreeFileFormat_AllSectionsSet()
{
var p = new FanucProgram(ThreeFileInput);
Assert.That(p.Program, Is.Not.Null);
Assert.That(p.ToolOffsetData, Is.Not.Null);
Assert.That(p.WorkZeroOffsetData, Is.Not.Null);
}
[Test]
public void Constructor_ThreeFileFormat_ToolOffsetDataContent()
{
var p = new FanucProgram(ThreeFileInput);
Assert.That(p.ToolOffsetData, Does.Contain("TOOL_DATA_LINE1"));
}
[Test]
public void Constructor_ThreeFileFormat_WorkZeroOffsetDataContent()
{
var p = new FanucProgram(ThreeFileInput);
Assert.That(p.WorkZeroOffsetData, Does.Contain("WORK_ZERO_LINE1"));
}
[Test]
public void GetProgramTitle_StandardProgram_ReturnsO1234()
{
var p = new FanucProgram(SimpleProgram);
string title = p.GetProgramTitle();
Assert.That(title, Is.EqualTo("O1234"));
}
[Test]
public void GetProgramTitle_Static_ReturnsTitle()
{
string title = FanucProgram.GetProgramTitle("\nO5678\nG0\n%");
Assert.That(title, Is.EqualTo("O5678"));
}
[Test]
public void GetProgramComment_ProgramWithComment_ReturnsComment()
{
var p = new FanucProgram(SimpleProgram);
string comment = p.GetProgramComment();
Assert.That(comment, Is.EqualTo("COMMENT"));
}
[Test]
public void GetProgramComment_ProgramWithoutComment_ReturnsEmpty()
{
var p = new FanucProgram("\nO1234\nG0 X0\nM30\n%");
string comment = p.GetProgramComment();
Assert.That(comment, Is.EqualTo(""));
}
[Test]
public void ChangeComment_ReplaceExistingComment_CommentUpdated()
{
var p = new FanucProgram(SimpleProgram);
p.ChangeComment("NEW_COMMENT");
Assert.That(p.GetProgramComment(), Is.EqualTo("NEW_COMMENT"));
}
[Test]
public void ChangeComment_NoExistingComment_CommentInserted()
{
var p = new FanucProgram("\nO1234\nG0 X0\nM30\n%");
p.ChangeComment("INSERTED");
Assert.That(p.GetProgramComment(), Is.EqualTo("INSERTED"));
}
[Test]
public void Standardize_LeadingPercent_Removed()
{
var p = new FanucProgram("%\nO1234\nG0\n%");
Assert.That(p.Program, Does.Not.StartWith("%"));
}
[Test]
public void Standardize_AngleBracketTitle_ConvertedToPlain()
{
var p = new FanucProgram("\n<O1234>\nG0\n%");
Assert.That(p.Program, Does.Contain("O1234"));
Assert.That(p.Program, Does.Not.Contain("<O1234>"));
}
[Test]
public void ToString_ThreeFileFormat_ContainsAllSections()
{
var p = new FanucProgram(ThreeFileInput);
string output = p.ToString();
Assert.That(output, Does.Contain("program:{"));
Assert.That(output, Does.Contain("tooloffsetdata:{"));
Assert.That(output, Does.Contain("workzerooffset:{"));
}
[Test]
public void ToString_ProgramContent_RoundTrips()
{
var p = new FanucProgram(ThreeFileInput);
string output = p.ToString();
var p2 = new FanucProgram(output);
Assert.That(p2.GetProgramTitle(), Is.EqualTo(p.GetProgramTitle()));
Assert.That(p2.ToolOffsetData, Does.Contain("TOOL_DATA_LINE1"));
Assert.That(p2.WorkZeroOffsetData, Does.Contain("WORK_ZERO_LINE1"));
}
[Test]
public void SetValue_ToolOffsetData_ValueStored()
{
var p = new FanucProgram(SimpleProgram);
p.setValue("TOOL_DATA\n%", FanucProgram.FILE_TYPE.TOOL_OFFEST_DATA);
Assert.That(p.ToolOffsetData, Does.Contain("TOOL_DATA"));
}
[Test]
public void SetValue_WorkZeroOffset_ValueStored()
{
var p = new FanucProgram(SimpleProgram);
p.setValue("WORK_DATA\n%", FanucProgram.FILE_TYPE.WORK_ZERO_OFFSET);
Assert.That(p.WorkZeroOffsetData, Does.Contain("WORK_DATA"));
}
}
}