diff --git a/csharp/Platform.Setters.Tests/SetterTests.cs b/csharp/Platform.Setters.Tests/SetterTests.cs index af0dc4c..cf36feb 100644 --- a/csharp/Platform.Setters.Tests/SetterTests.cs +++ b/csharp/Platform.Setters.Tests/SetterTests.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using Xunit; namespace Platform.Setters.Tests @@ -45,5 +46,261 @@ public void MethodsWithIntegerReturnTypeTest() Assert.Equal(0, setter.SetFirstAndReturnFalse(new int[] { 4 })); Assert.Equal(4, setter.Result); } + + [Fact] + public void SetterBaseSetMethodTest() + { + Setter setter = new Setter(); + setter.Set("test"); + Assert.Equal("test", setter.Result); + } + + [Fact] + public void SetterWithTDecisionParameterlessConstructorTest() + { + Setter setter = new Setter(); + Assert.Equal(default, setter.Result); + Assert.Equal(default, setter.TrueValue); + Assert.Equal(default, setter.FalseValue); + } + + [Fact] + public void SetterWithTDecisionDefaultValueConstructorTest() + { + Setter setter = new Setter("default"); + Assert.Equal("default", setter.Result); + Assert.Equal(default, setter.TrueValue); + Assert.Equal(default, setter.FalseValue); + } + + [Fact] + public void SetterWithTDecisionTrueAndFalseValuesConstructorTest() + { + Setter setter = new Setter("success", "failure"); + Assert.Equal(default, setter.Result); + Assert.Equal("success", setter.TrueValue); + Assert.Equal("failure", setter.FalseValue); + } + + [Fact] + public void SetterWithTDecisionFullConstructorTest() + { + Setter setter = new Setter("success", "failure", 42); + Assert.Equal(42, setter.Result); + Assert.Equal("success", setter.TrueValue); + Assert.Equal("failure", setter.FalseValue); + } + + [Fact] + public void SetFirstAndReturnTrueWithNullListTest() + { + Setter setter = new Setter(100); + bool result = setter.SetFirstAndReturnTrue(null); + Assert.True(result); + Assert.Equal(100, setter.Result); // Should remain unchanged + } + + [Fact] + public void SetFirstAndReturnFalseWithNullListTest() + { + Setter setter = new Setter(100); + bool result = setter.SetFirstAndReturnFalse(null); + Assert.False(result); + Assert.Equal(100, setter.Result); // Should remain unchanged + } + + [Fact] + public void SetFirstAndReturnTrueWithCustomTDecisionTest() + { + Setter setter = new Setter(1, 0); + int result = setter.SetFirstAndReturnTrue(new string[] { "test" }); + Assert.Equal(1, result); + Assert.Equal("test", setter.Result); + } + + [Fact] + public void SetFirstAndReturnFalseWithCustomTDecisionTest() + { + Setter setter = new Setter(1, 0); + int result = setter.SetFirstAndReturnFalse(new string[] { "test" }); + Assert.Equal(0, result); + Assert.Equal("test", setter.Result); + } + } + + public class SetterExtensionsTests + { + [Fact] + public void SetFirstFromNonNullListAndReturnTrueTest() + { + var setter = new Setter("success", "failure"); + var list = new List { 1, 2, 3 }; + + string result = setter.SetFirstFromNonNullListAndReturnTrue(list); + + Assert.Equal("success", result); + Assert.Equal(1, setter.Result); + } + + [Fact] + public void SetFirstFromNonNullListAndReturnTrueWithNullListTest() + { + var setter = new Setter("success", "failure", 42); + + string result = setter.SetFirstFromNonNullListAndReturnTrue(null); + + Assert.Equal("success", result); + Assert.Equal(42, setter.Result); // Should remain unchanged + } + + [Fact] + public void SetFirstFromNonNullFirstListAndReturnTrueTest() + { + var setter = new Setter(true, false); + var list1 = new List { "first", "second" }; + var list2 = new List { "third", "fourth" }; + + bool result = setter.SetFirstFromNonNullFirstListAndReturnTrue(list1, list2); + + Assert.True(result); + Assert.Equal("first", setter.Result); + } + + [Fact] + public void SetFirstFromNonNullFirstListAndReturnTrueWithNullFirstListTest() + { + var setter = new Setter(true, false, "default"); + var list2 = new List { "third", "fourth" }; + + bool result = setter.SetFirstFromNonNullFirstListAndReturnTrue(null, list2); + + Assert.True(result); + Assert.Equal("default", setter.Result); // Should remain unchanged + } + + [Fact] + public void SetSecondFromNonNullFirstListAndReturnTrueTest() + { + var setter = new Setter('T', 'F'); + var list1 = new List { 10, 20, 30 }; + var list2 = new List { 40, 50 }; + + char result = setter.SetSecondFromNonNullFirstListAndReturnTrue(list1, list2); + + Assert.Equal('T', result); + Assert.Equal(20, setter.Result); + } + + [Fact] + public void SetSecondFromNonNullFirstListAndReturnTrueWithNullFirstListTest() + { + var setter = new Setter('T', 'F', 99); + var list2 = new List { 40, 50 }; + + char result = setter.SetSecondFromNonNullFirstListAndReturnTrue(null, list2); + + Assert.Equal('T', result); + Assert.Equal(99, setter.Result); // Should remain unchanged + } + + [Fact] + public void SetThirdFromNonNullFirstListAndReturnTrueTest() + { + var setter = new Setter(1, 0); + var list1 = new List { 1.1, 2.2, 3.3, 4.4 }; + var list2 = new List { 5.5, 6.6 }; + + byte result = setter.SetThirdFromNonNullFirstListAndReturnTrue(list1, list2); + + Assert.Equal(1, result); + Assert.Equal(3.3, setter.Result); + } + + [Fact] + public void SetThirdFromNonNullFirstListAndReturnTrueWithNullFirstListTest() + { + var setter = new Setter(1, 0, 9.9); + var list2 = new List { 5.5, 6.6 }; + + byte result = setter.SetThirdFromNonNullFirstListAndReturnTrue(null, list2); + + Assert.Equal(1, result); + Assert.Equal(9.9, setter.Result); // Should remain unchanged + } + + [Fact] + public void SetFirstFromNonNullSecondListAndReturnTrueTest() + { + var setter = new Setter(100, 0); + var list1 = new List { "first", "second" }; + var list2 = new List { "third", "fourth" }; + + int result = setter.SetFirstFromNonNullSecondListAndReturnTrue(list1, list2); + + Assert.Equal(100, result); + Assert.Equal("third", setter.Result); + } + + [Fact] + public void SetFirstFromNonNullSecondListAndReturnTrueWithNullSecondListTest() + { + var setter = new Setter(100, 0, "default"); + var list1 = new List { "first", "second" }; + + int result = setter.SetFirstFromNonNullSecondListAndReturnTrue(list1, null); + + Assert.Equal(100, result); + Assert.Equal("default", setter.Result); // Should remain unchanged + } + + [Fact] + public void SetSecondFromNonNullSecondListAndReturnTrueTest() + { + var setter = new Setter(1L, -1L); + var list1 = new List { 1.0f, 2.0f }; + var list2 = new List { 3.0f, 4.0f, 5.0f }; + + long result = setter.SetSecondFromNonNullSecondListAndReturnTrue(list1, list2); + + Assert.Equal(1L, result); + Assert.Equal(4.0f, setter.Result); + } + + [Fact] + public void SetSecondFromNonNullSecondListAndReturnTrueWithNullSecondListTest() + { + var setter = new Setter(1L, -1L, 9.9f); + var list1 = new List { 1.0f, 2.0f }; + + long result = setter.SetSecondFromNonNullSecondListAndReturnTrue(list1, null); + + Assert.Equal(1L, result); + Assert.Equal(9.9f, setter.Result); // Should remain unchanged + } + + [Fact] + public void SetThirdFromNonNullSecondListAndReturnTrueTest() + { + var setter = new Setter(true, false); + var list1 = new List { 'a', 'b' }; + var list2 = new List { 'x', 'y', 'z', 'w' }; + + bool result = setter.SetThirdFromNonNullSecondListAndReturnTrue(list1, list2); + + Assert.True(result); + Assert.Equal('z', setter.Result); + } + + [Fact] + public void SetThirdFromNonNullSecondListAndReturnTrueWithNullSecondListTest() + { + var setter = new Setter(true, false, 'X'); + var list1 = new List { 'a', 'b' }; + + bool result = setter.SetThirdFromNonNullSecondListAndReturnTrue(list1, null); + + Assert.True(result); + Assert.Equal('X', setter.Result); // Should remain unchanged + } } }