位置节点增加保存图像到本地的功能;支持输入图像

This commit is contained in:
zhengxuan.zhang
2026-05-15 13:44:37 +08:00
parent bc8a0eadfb
commit f07d891346
23 changed files with 3549 additions and 34 deletions
@@ -2,6 +2,8 @@
// Validates: Requirements 6.1, 6.2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using FsCheck;
using FsCheck.Fluent;
using FsCheck.Xunit;
@@ -65,5 +67,65 @@ namespace XplorePlane.Tests.ViewModels
return runningOk && succeededOk && failedOk && idleOk;
});
}
#region ManualImagePath Binding Tests - Validates: Requirements 2.4
[Fact]
public void BrowseImageCommand_IsNotNull_AndCanExecute()
{
// Arrange
var node = new SavePositionNode(Guid.NewGuid(), 0, "Pos_0", MotionState.Default);
var vm = new CncNodeViewModel(node, (_, __) => { });
// Act & Assert
Assert.NotNull(vm.BrowseImageCommand);
Assert.True(vm.BrowseImageCommand.CanExecute(null));
}
[Fact]
public void ManualImagePath_Set_RaisesPropertyChangedNotification()
{
// Arrange
var node = new SavePositionNode(Guid.NewGuid(), 0, "Pos_0", MotionState.Default);
var vm = new CncNodeViewModel(node, (_, __) => { });
var changedProperties = new List<string>();
((INotifyPropertyChanged)vm).PropertyChanged += (_, e) => changedProperties.Add(e.PropertyName);
// Act
vm.ManualImagePath = @"C:\Images\test.bmp";
// Assert
Assert.Contains(nameof(vm.ManualImagePath), changedProperties);
}
[Fact]
public void ManualImagePath_Getter_ReturnsValueFromUnderlyingModel()
{
// Arrange
var expectedPath = @"D:\TestImages\sample.png";
var node = new SavePositionNode(Guid.NewGuid(), 0, "Pos_0", MotionState.Default, ManualImagePath: expectedPath);
var vm = new CncNodeViewModel(node, (_, __) => { });
// Act & Assert
Assert.Equal(expectedPath, vm.ManualImagePath);
}
[Fact]
public void ManualImagePath_Set_UpdatesUnderlyingModel()
{
// Arrange
var node = new SavePositionNode(Guid.NewGuid(), 0, "Pos_0", MotionState.Default);
var vm = new CncNodeViewModel(node, (_, __) => { });
var newPath = @"C:\Images\updated.tiff";
// Act
vm.ManualImagePath = newPath;
// Assert
var updatedNode = Assert.IsType<SavePositionNode>(vm.Model);
Assert.Equal(newPath, updatedNode.ManualImagePath);
}
#endregion
}
}