Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public class OptionObjectHelpersOptionObjectTests
[DataRow("Enabled")]
[DataRow("Locked")]
[DataRow("Unlocked")]
[DataRow("Required")]
[DataRow("Optional")]
public void SetField_OptionObject_WithNullFieldNumber_ThrowsArgumentNullException(string operation)
{
var optionObject = new OptionObject();
Expand All @@ -24,6 +26,8 @@ public void SetField_OptionObject_WithNullFieldNumber_ThrowsArgumentNullExceptio
"Enabled" => () => optionObject.SetEnabledField(null!),
"Locked" => () => optionObject.SetLockedField(null!),
"Unlocked" => () => optionObject.SetUnlockedField(null!),
"Required" => () => optionObject.SetRequiredField(null!),
"Optional" => () => optionObject.SetOptionalField(null!),
_ => throw new ArgumentOutOfRangeException(nameof(operation))
};

Expand All @@ -35,6 +39,8 @@ public void SetField_OptionObject_WithNullFieldNumber_ThrowsArgumentNullExceptio
[DataRow("Enabled")]
[DataRow("Locked")]
[DataRow("Unlocked")]
[DataRow("Required")]
[DataRow("Optional")]
public void SetField_OptionObject_WithEmptyFieldNumber_ThrowsArgumentException(string operation)
{
var optionObject = new OptionObject();
Expand All @@ -48,6 +54,8 @@ public void SetField_OptionObject_WithEmptyFieldNumber_ThrowsArgumentException(s
"Enabled" => () => optionObject.SetEnabledField(string.Empty),
"Locked" => () => optionObject.SetLockedField(string.Empty),
"Unlocked" => () => optionObject.SetUnlockedField(string.Empty),
"Required" => () => optionObject.SetRequiredField(string.Empty),
"Optional" => () => optionObject.SetOptionalField(string.Empty),
_ => throw new ArgumentOutOfRangeException(nameof(operation))
};

Expand All @@ -59,6 +67,8 @@ public void SetField_OptionObject_WithEmptyFieldNumber_ThrowsArgumentException(s
[DataRow("Enabled")]
[DataRow("Locked")]
[DataRow("Unlocked")]
[DataRow("Required")]
[DataRow("Optional")]
public void SetFields_OptionObject_WithMixedFormMatches_OnlyAppliesToMatchingForms(string operation)
{
var optionObject = new OptionObject();
Expand Down Expand Up @@ -111,6 +121,28 @@ public void SetFields_OptionObject_WithMixedFormMatches_OnlyAppliesToMatchingFor
Assert.AreEqual("0", matchingForm.CurrentRow.Fields[0].Lock);
Assert.AreEqual("1", nonMatchingForm.CurrentRow.Fields[0].Lock);
break;
case "Required":
matchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "0" });
nonMatchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "0" });
optionObject.Forms.Add(matchingForm);
optionObject.Forms.Add(nonMatchingForm);

optionObject.SetRequiredFields(new List<string> { "100" });

Assert.AreEqual("1", matchingForm.CurrentRow.Fields[0].Required);
Assert.AreEqual("0", nonMatchingForm.CurrentRow.Fields[0].Required);
break;
case "Optional":
matchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "1" });
nonMatchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "1" });
optionObject.Forms.Add(matchingForm);
optionObject.Forms.Add(nonMatchingForm);

optionObject.SetOptionalFields(new List<string> { "100" });

Assert.AreEqual("0", matchingForm.CurrentRow.Fields[0].Required);
Assert.AreEqual("1", nonMatchingForm.CurrentRow.Fields[0].Required);
break;
default:
throw new ArgumentOutOfRangeException(nameof(operation));
}
Expand Down Expand Up @@ -514,6 +546,117 @@ public void SetUnlockedField_OptionObject_WithNoMatchingField_ThrowsArgumentExce
Assert.ThrowsException<ArgumentException>(() => optionObject.SetUnlockedField("100"));
}

[TestMethod]
public void SetRequiredField_OptionObject_WithNoMatchingField_ThrowsArgumentException()
{
var optionObject = new OptionObject();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "0" });
optionObject.Forms.Add(form);

Assert.ThrowsException<ArgumentException>(() => optionObject.SetRequiredField("100"));
}

[TestMethod]
public void SetOptionalField_OptionObject_WithNoMatchingField_ThrowsArgumentException()
{
var optionObject = new OptionObject();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "1" });
optionObject.Forms.Add(form);

Assert.ThrowsException<ArgumentException>(() => optionObject.SetOptionalField("100"));
}

[TestMethod]
public void SetRequiredField_OptionObject_WithMatchingField_SetsRequired()
{
var optionObject = new OptionObject();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "0" });
optionObject.Forms.Add(form);

optionObject.SetRequiredField("100");

Assert.AreEqual("1", form.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetOptionalField_OptionObject_WithMatchingField_SetsOptional()
{
var optionObject = new OptionObject();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "1" });
optionObject.Forms.Add(form);

optionObject.SetOptionalField("100");

Assert.AreEqual("0", form.CurrentRow.Fields[0].Required);
}

[DataTestMethod]
[DataRow("Required", "0", "0", "1", "0")]
[DataRow("Optional", "1", "1", "0", "1")]
public void SetSingleRequiredOptionalField_OptionObject_WithMixedFormMatches_OnlyMutatesMatchingForm(
string operation,
string initialTarget,
string initialNonTarget,
string expectedTarget,
string expectedNonTarget)
{
var optionObject = new OptionObject();
var targetForm = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
targetForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = initialTarget });

var nonTargetForm = new FormObject { FormId = "2", CurrentRow = new RowObject { RowId = "1" } };
nonTargetForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = initialNonTarget });

optionObject.Forms.Add(targetForm);
optionObject.Forms.Add(nonTargetForm);

switch (operation)
{
case "Required":
optionObject.SetRequiredField("100");
break;
case "Optional":
optionObject.SetOptionalField("100");
break;
default:
Assert.Fail($"Unsupported operation '{operation}'");
break;
}

Assert.AreEqual(expectedTarget, targetForm.CurrentRow.Fields[0].Required);
Assert.AreEqual(expectedNonTarget, nonTargetForm.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetRequiredFields_OptionObject_WithFieldObjects_SetsRequired()
{
var optionObject = new OptionObject();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "0" });
optionObject.Forms.Add(form);

optionObject.SetRequiredFields(new List<FieldObject> { new FieldObject { FieldNumber = "100" } });

Assert.AreEqual("1", form.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetOptionalFields_OptionObject_WithFieldObjects_SetsOptional()
{
var optionObject = new OptionObject();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "1" });
optionObject.Forms.Add(form);

optionObject.SetOptionalFields(new List<FieldObject> { new FieldObject { FieldNumber = "100" } });

Assert.AreEqual("0", form.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetLockedFields_OptionObject_WithDuplicateFieldNumbers_LocksTargetField()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public class OptionObjectHelpersOptionObject2Tests
[DataRow("Enabled")]
[DataRow("Locked")]
[DataRow("Unlocked")]
[DataRow("Required")]
[DataRow("Optional")]
public void SetField_OptionObject2_WithNullFieldNumber_ThrowsArgumentNullException(string operation)
{
var optionObject = new OptionObject2();
Expand All @@ -24,6 +26,8 @@ public void SetField_OptionObject2_WithNullFieldNumber_ThrowsArgumentNullExcepti
"Enabled" => () => optionObject.SetEnabledField(null!),
"Locked" => () => optionObject.SetLockedField(null!),
"Unlocked" => () => optionObject.SetUnlockedField(null!),
"Required" => () => optionObject.SetRequiredField(null!),
"Optional" => () => optionObject.SetOptionalField(null!),
_ => throw new ArgumentOutOfRangeException(nameof(operation))
};

Expand All @@ -35,6 +39,8 @@ public void SetField_OptionObject2_WithNullFieldNumber_ThrowsArgumentNullExcepti
[DataRow("Enabled")]
[DataRow("Locked")]
[DataRow("Unlocked")]
[DataRow("Required")]
[DataRow("Optional")]
public void SetField_OptionObject2_WithEmptyFieldNumber_ThrowsArgumentException(string operation)
{
var optionObject = new OptionObject2();
Expand All @@ -48,6 +54,8 @@ public void SetField_OptionObject2_WithEmptyFieldNumber_ThrowsArgumentException(
"Enabled" => () => optionObject.SetEnabledField(string.Empty),
"Locked" => () => optionObject.SetLockedField(string.Empty),
"Unlocked" => () => optionObject.SetUnlockedField(string.Empty),
"Required" => () => optionObject.SetRequiredField(string.Empty),
"Optional" => () => optionObject.SetOptionalField(string.Empty),
_ => throw new ArgumentOutOfRangeException(nameof(operation))
};

Expand All @@ -59,6 +67,8 @@ public void SetField_OptionObject2_WithEmptyFieldNumber_ThrowsArgumentException(
[DataRow("Enabled")]
[DataRow("Locked")]
[DataRow("Unlocked")]
[DataRow("Required")]
[DataRow("Optional")]
public void SetFields_OptionObject2_WithMixedFormMatches_OnlyAppliesToMatchingForms(string operation)
{
var optionObject = new OptionObject2();
Expand Down Expand Up @@ -111,6 +121,28 @@ public void SetFields_OptionObject2_WithMixedFormMatches_OnlyAppliesToMatchingFo
Assert.AreEqual("0", matchingForm.CurrentRow.Fields[0].Lock);
Assert.AreEqual("1", nonMatchingForm.CurrentRow.Fields[0].Lock);
break;
case "Required":
matchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "0" });
nonMatchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "0" });
optionObject.Forms.Add(matchingForm);
optionObject.Forms.Add(nonMatchingForm);

optionObject.SetRequiredFields(new List<string> { "100" });

Assert.AreEqual("1", matchingForm.CurrentRow.Fields[0].Required);
Assert.AreEqual("0", nonMatchingForm.CurrentRow.Fields[0].Required);
break;
case "Optional":
matchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "1" });
nonMatchingForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "1" });
optionObject.Forms.Add(matchingForm);
optionObject.Forms.Add(nonMatchingForm);

optionObject.SetOptionalFields(new List<string> { "100" });

Assert.AreEqual("0", matchingForm.CurrentRow.Fields[0].Required);
Assert.AreEqual("1", nonMatchingForm.CurrentRow.Fields[0].Required);
break;
default:
throw new ArgumentOutOfRangeException(nameof(operation));
}
Expand Down Expand Up @@ -360,5 +392,116 @@ public void SetLockedField_OptionObject2_WithNoMatchingField_ThrowsArgumentExcep

Assert.ThrowsException<ArgumentException>(() => optionObject.SetLockedField("100"));
}

[TestMethod]
public void SetRequiredField_OptionObject2_WithNoMatchingField_ThrowsArgumentException()
{
var optionObject = new OptionObject2();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "0" });
optionObject.Forms.Add(form);

Assert.ThrowsException<ArgumentException>(() => optionObject.SetRequiredField("100"));
}

[TestMethod]
public void SetOptionalField_OptionObject2_WithNoMatchingField_ThrowsArgumentException()
{
var optionObject = new OptionObject2();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = "1" });
optionObject.Forms.Add(form);

Assert.ThrowsException<ArgumentException>(() => optionObject.SetOptionalField("100"));
}

[TestMethod]
public void SetRequiredField_OptionObject2_WithMatchingField_SetsRequired()
{
var optionObject = new OptionObject2();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "0" });
optionObject.Forms.Add(form);

optionObject.SetRequiredField("100");

Assert.AreEqual("1", form.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetOptionalField_OptionObject2_WithMatchingField_SetsOptional()
{
var optionObject = new OptionObject2();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "1" });
optionObject.Forms.Add(form);

optionObject.SetOptionalField("100");

Assert.AreEqual("0", form.CurrentRow.Fields[0].Required);
}

[DataTestMethod]
[DataRow("Required", "0", "0", "1", "0")]
[DataRow("Optional", "1", "1", "0", "1")]
public void SetSingleRequiredOptionalField_OptionObject2_WithMixedFormMatches_OnlyMutatesMatchingForm(
string operation,
string initialTarget,
string initialNonTarget,
string expectedTarget,
string expectedNonTarget)
{
var optionObject = new OptionObject2();
var targetForm = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
targetForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = initialTarget });

var nonTargetForm = new FormObject { FormId = "2", CurrentRow = new RowObject { RowId = "1" } };
nonTargetForm.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "200", Required = initialNonTarget });

optionObject.Forms.Add(targetForm);
optionObject.Forms.Add(nonTargetForm);

switch (operation)
{
case "Required":
optionObject.SetRequiredField("100");
break;
case "Optional":
optionObject.SetOptionalField("100");
break;
default:
Assert.Fail($"Unsupported operation '{operation}'");
break;
}

Assert.AreEqual(expectedTarget, targetForm.CurrentRow.Fields[0].Required);
Assert.AreEqual(expectedNonTarget, nonTargetForm.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetRequiredFields_OptionObject2_WithFieldObjects_SetsRequired()
{
var optionObject = new OptionObject2();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "0" });
optionObject.Forms.Add(form);

optionObject.SetRequiredFields(new List<FieldObject> { new FieldObject { FieldNumber = "100" } });

Assert.AreEqual("1", form.CurrentRow.Fields[0].Required);
}

[TestMethod]
public void SetOptionalFields_OptionObject2_WithFieldObjects_SetsOptional()
{
var optionObject = new OptionObject2();
var form = new FormObject { FormId = "1", CurrentRow = new RowObject { RowId = "1" } };
form.CurrentRow.Fields.Add(new FieldObject { FieldNumber = "100", Required = "1" });
optionObject.Forms.Add(form);

optionObject.SetOptionalFields(new List<FieldObject> { new FieldObject { FieldNumber = "100" } });

Assert.AreEqual("0", form.CurrentRow.Fields[0].Required);
}
}
}
Loading
Loading