Merge pull request #4019 from jlewin/master
Skip fields during merge that already equal target value
This commit is contained in:
commit
31204d2dfa
3 changed files with 39 additions and 3 deletions
|
|
@ -163,8 +163,8 @@ namespace MatterHackers.MatterControl.Library.Export
|
|||
|
||||
if (loadedItem != null)
|
||||
{
|
||||
// Necessary to ensure scene or non-persisted ILibraryObject3D content is on disk before slicing
|
||||
loadedItem.PersistAssets(null);
|
||||
// Ensure content is on disk before slicing
|
||||
await loadedItem.PersistAssets(null);
|
||||
|
||||
try
|
||||
{
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
string importValue = settingsToImport.GetValue(keyName, sourceFilter).Trim();
|
||||
|
||||
if (!string.IsNullOrEmpty(importValue)
|
||||
&& currentValue != keyName
|
||||
&& currentValue != importValue
|
||||
&& !skipKeys.Contains(keyName))
|
||||
{
|
||||
destinationLayer[keyName] = importValue;
|
||||
|
|
|
|||
|
|
@ -38,5 +38,41 @@ namespace MatterControl.Tests.MatterControl
|
|||
Assert.AreEqual(printerSettings.GetValue(SettingsKey.cancel_gcode), newValue, "Imported setting applied");
|
||||
Assert.IsEmpty(printerSettings.GetValue(notAnExistingKey), "Invalid settings keys should be skipped");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MergeDropsFieldsIfValueAlreadySet()
|
||||
{
|
||||
// Validates that field are dropped during import if they are already set in a base layer
|
||||
//
|
||||
AggContext.StaticData = new FileSystemStaticData(TestContext.CurrentContext.ResolveProjectPath(4, "StaticData"));
|
||||
MatterControlUtilities.OverrideAppDataLocation(TestContext.CurrentContext.ResolveProjectPath(4));
|
||||
|
||||
var printerSettings = new PrinterSettings();
|
||||
printerSettings.SetValue(SettingsKey.cancel_gcode, "cancel gcode");
|
||||
printerSettings.SetValue(SettingsKey.start_gcode, "start gcode");
|
||||
|
||||
// Ensure layer_height of a given value
|
||||
printerSettings.BaseLayer[SettingsKey.layer_height] = "0.25";
|
||||
|
||||
string newValue = "----- cancel gcode ----";
|
||||
string notAnExistingKey = "NotAnExistingKey";
|
||||
|
||||
var toImport = new PrinterSettings();
|
||||
toImport.SetValue(SettingsKey.cancel_gcode, newValue);
|
||||
toImport.SetValue(SettingsKey.layer_height, "0.25");
|
||||
toImport.SetValue(notAnExistingKey, "------------------");
|
||||
|
||||
var sourceFilter = new List<PrinterSettingsLayer>()
|
||||
{
|
||||
toImport.UserLayer
|
||||
};
|
||||
|
||||
printerSettings.Merge(printerSettings.UserLayer, toImport, sourceFilter, false);
|
||||
|
||||
Assert.AreEqual(printerSettings.GetValue(SettingsKey.cancel_gcode), newValue, "Imported setting applied");
|
||||
Assert.IsEmpty(printerSettings.GetValue(notAnExistingKey), "Invalid settings keys should be skipped");
|
||||
Assert.IsFalse(printerSettings.UserLayer.ContainsKey(SettingsKey.layer_height), "User layer should not contain layer_height after merge");
|
||||
Assert.AreEqual(2, printerSettings.UserLayer.Count, "User layer should contain two items after import (start_gcode, cancel_gcode)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue