185 lines
5.3 KiB
C#
185 lines
5.3 KiB
C#
using NUnit.Framework;
|
|
using FanucProgramManager;
|
|
|
|
namespace FanucProgramManager.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"));
|
|
}
|
|
}
|
|
}
|