Skip to content

Commit 22a3c13

Browse files
committed
Fixes for ListTake, ListSkip methods; Added unit tests for the same
1 parent ed5f2c5 commit 22a3c13

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

Cql/CoreTests/PrimitiveTests.cs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3886,5 +3886,72 @@ public void SliceTakeIsNull()
38863886
}
38873887

38883888
#endregion
3889+
3890+
#region ListSkip and ListTake tests
3891+
3892+
[TestMethod]
3893+
public void ListSkipNull()
3894+
{
3895+
var rtx = GetNewContext();
3896+
var inputList = new List<int> { 1, 2, 3, 4, 5 };
3897+
var expectedList = new List<int> { 1, 2, 3, 4, 5 };
3898+
var skippedList = rtx.Operators.ListSkip(inputList, null);
3899+
Assert.IsNotNull(skippedList);
3900+
CollectionAssert.AreEqual(expectedList, skippedList.ToList());
3901+
}
3902+
3903+
[TestMethod]
3904+
public void ListSkipNullInput()
3905+
{
3906+
var rtx = GetNewContext();
3907+
var inputList = null as List<int>;
3908+
var skippedList = rtx.Operators.ListSkip(inputList, 2);
3909+
Assert.IsNull(skippedList);
3910+
}
3911+
3912+
[TestMethod]
3913+
public void ListSkip()
3914+
{
3915+
var rtx = GetNewContext();
3916+
var inputList = new List<int> { 1, 2, 3, 4, 5 };
3917+
var expectedList = new List<int> { 3, 4, 5 };
3918+
var skippedList = rtx.Operators.ListSkip(inputList, 2);
3919+
Assert.IsNotNull(skippedList);
3920+
CollectionAssert.AreEqual(expectedList, skippedList.ToList());
3921+
}
3922+
3923+
[TestMethod]
3924+
public void ListTakeNull()
3925+
{
3926+
var rtx = GetNewContext();
3927+
var inputList = new List<int> { 1, 2, 3, 4, 5 };
3928+
var expectedList = new List<int> { };
3929+
var takenList = rtx.Operators.ListTake(inputList, null);
3930+
Assert.IsNotNull(takenList);
3931+
CollectionAssert.AreEqual(expectedList, takenList.ToList());
3932+
}
3933+
3934+
[TestMethod]
3935+
public void ListTakeNullInput()
3936+
{
3937+
var rtx = GetNewContext();
3938+
var inputList = null as List<int>;
3939+
var takenList = rtx.Operators.ListTake(inputList, 2);
3940+
Assert.IsNull(takenList);
3941+
}
3942+
3943+
[TestMethod]
3944+
public void ListTake()
3945+
{
3946+
var rtx = GetNewContext();
3947+
var inputList = new List<int> { 1, 2, 3, 4, 5 };
3948+
var expectedList = new List<int> { 1, 2 };
3949+
var takenList = rtx.Operators.ListTake(inputList, 2);
3950+
Assert.IsNotNull(takenList);
3951+
CollectionAssert.AreEqual(expectedList, takenList.ToList());
3952+
}
3953+
3954+
#endregion
3955+
38893956
}
38903957
}

Cql/Cql.Runtime/Operators/CqlOperators.ListOperators.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,7 +1069,9 @@ internal partial class CqlOperators
10691069

10701070
public IEnumerable<T>? ListSkip<T>(IEnumerable<T> argument, int? number)
10711071
{
1072-
if (argument == null || number == null) return null;
1072+
if (number == null) return argument;
1073+
1074+
if (argument == null) return null;
10731075
else return argument
10741076
.Skip(number.Value)
10751077
.ToList();
@@ -1087,7 +1089,9 @@ internal partial class CqlOperators
10871089

10881090
public IEnumerable<T>? ListTake<T>(IEnumerable<T> argument, int? number)
10891091
{
1090-
if (argument == null || number == null) return null;
1092+
if (number == null) return new List<T>();
1093+
1094+
if (argument == null) return null;
10911095
else return argument
10921096
.Take(number.Value)
10931097
.ToList();

0 commit comments

Comments
 (0)